子查询(sub query)也称为查询的嵌套
使用子查询:可以简化思路,化繁为简,分而治之
可分为:1)非关联子查询(常见) 2)关联子查询 子查询的结果参与表连接
eg,求出谁的工资最低
思路:先求出最低工资,才求出最低工资的人是谁
1、select min(salary) from t_emp --750
2、select id,name,salaryfrom t_emp where salary=750 --Tom
合并 select id,name ,salary from t_emp where salary=(select min(salary) from t_emp))
ID FIRST_NAME SALARY
--- ------------------------- ----------
20 TOM 750
1
)主查询
最外层
提供最后结果
select id, first_name, salary
from s_emp
where salary = (...);
2)子查询 里层 提供部分功能
select min(salary) from s_emp
子查询的顺序:先执行子查询,返回结果后,在执行主查询
子查询的结果:一般都要有结果
1)一条记录、单值 salary = 750 min(salary) -> 750
2)多条记录、多值 in(31, 32, 33) not in
3)无记录、无值 几乎不用