Exists 和 not exists子查询
exists
语法:select ……from 表名 where exists(子查询)
- Exists用来检测数据库对象是否存在
- Exists关键字后面的参数是任意的子查询
- 子查询有返回结果: EXISTS子查询结果为TRUE
- 子查询无返回结果: EXISTS子查询结果为FALSE, 外层查询不执行
not exists
not exists和exists实现相反操作
子查询注意事项
- 查询语句可以嵌套在任何表达式出现的位置
(1)嵌套在select语句的select子句中的子查询
select (子查询) from 表名;
(2) 嵌套在select语句的from子句中的子查询
select * from (子查询) as 表的别名
- 只出现在子查询中而没有出现在父查询中的表不能包含在输出列中
多层嵌套子查询的最终数据集只能包含父查询(最外层的循环)的select子句出现的字段,而子查询的输出结果通常会作为其外层子查询数数据源或用于数据判断