博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
exists与in
阅读量:5037 次
发布时间:2019-06-12

本文共 651 字,大约阅读时间需要 2 分钟。

学生表:s

sid  sname

1  s1

2  s2

3  s3

课程表:c

cid cname

1  c1

2  c2

选课表:sc

sid  cid

1  1

2  1

1  2

查询选修了课程的学生:

select * from s where exists(select * from sc where s.sid=sid)

exists查询过程:先执行主查询, select * from s ,    然后用主查询的每一条记录的sid与表sc中的sid作相等比较(如果与选课表第一条记录不相等,则继续往下查找,如果找到,就不往下查找了,找到返回true,没有找到则返回false),如果相等,返回真, 就筛选出这条记录. exists(select * from sc where s.sid=sid)返回的是true还是false, 所以*可以是任何字段, 因为它只表示有没有找到. 如表s中学号为1,对应选课表中第一条记录,它就不会再向下比较了,这样就节省了时间. 

这条语句还可以写成in形式:

select * from s where sid in (select sid from sc where sid=s.sid)

in查询过程: 先执行子查询, 再执行主查询.

 

主表数据>子表数据,用in; 反之,主表数据<子表数据, 用exists.

转载于:https://www.cnblogs.com/panthervic/archive/2012/04/12/2444247.html

你可能感兴趣的文章
python中数据的变量和字符串的常用使用方法
查看>>
等价类划分进阶篇
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>
C#:System.Array简单使用
查看>>
C#inSSIDer强大的wifi无线热点信号扫描器源码
查看>>
「Foundation」集合
查看>>
算法时间复杂度
查看>>