![6e0c888f96cf5f76bb7378425df62085.png](https://i-blog.csdnimg.cn/blog_migrate/ce5e9b7c9d605ffac22028d84292b930.jpeg)
定义:把一个查询的结果作为另外一个查询语句的查询条件
--
关键字 -- in
- in的查询效果等于多个or
- 查询平均年龄在25岁以上的部门名
mysql
- not in 不支持查询null ,即子查询中如果存在null的值,not in将无法处理
mysql
关键字 -- any
- any后也可以跟子查询语句,同in稍有不同
- in后可以跟子查询语句和值,而any只能跟子查询语句
- any 必须和其他的比较运算符共同使用,而且any必须将比较运算符放在 any关键字之前,所比较的值需要匹配子查询中的任意一个值,这也就是 any在英文中所表示的意义
mysql
关键字 -- all
- all同any类似,只不过all表示的是所有,any表示任一一个
mysql
关键字 -- exists
- exists(子查询语句)
- 只要子查询语句有结果,exists就成立,反之则不成立
- not exists 的效果 高于 not in
- not in() 子查询的执行顺序是为了证明not in成立,即找不到,需要一条一条的查询表,符合要求返回子查询的结果集,不符合就继续查询下一条记录,直到把表中的记录查询完
- not exists()执行顺序是在表中查询,是根据索引查询的,如果存在就返回true,如果不存在就返回false,不会每条记录都去查询
- exists后面一般都是子查询,后面的子查询被称做相关子查询(即与主语句相关),当子查询返回行数时,exists条件返回true,否则返回false,exists是不返回列表的值的,exists只在乎括号里的数据能不能查找出来,是否存在这样的记录
mysql