子查询
当查询语句中包含未知量时,通过使用另外一个查询语句计算出未知量,
再将这个量应用到主查寻中
外部查询又称为主查询,内部查询又称为子查询
子查询要用括号括起来,先于主查询执行
子查询可以应在from子句,where子句和having子句中
语法:
from (查询语句)
where 表达式 运算符 (查询语句)
having 表达式 运算符 (查询语句)
类型:
单行子查询,子查询语句返回1行1列
多行子查询,子查询语句返回多行1列
多列子查询,子查询语句返回多行多列
注意:
= < > >= <= <>,只能用于单行子查询
如果子查询返回了空值,主查询的结果无法正确显示
IN ANY ALL,用于多行子查询
IN 用于多列子查询
多行子查询中的空值问题
如果在多行子查询中存在空值,那么将无法得正确结果
在子查询手动将空值去除,WHERE列名 IS NOT NULL
SELECT *
FROM emp
WHERE empno NOT IN (SELECT DISTINCT mgrFROM emp)
empno NOT IN ( 7698,7839,null )
NOT ( empno=7698 or empno=7839 or empno=null)
empno<>7698 and empno<>7839 and empno<>null