1. 什么是子查询
当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询)
什么时候用?
当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时,
例如:给出一个部门名称,需要获得该部门所有的员工信息
分析:
1.需要先确定部门的id
2.然后才能通过id确定员工
解决问题的方式是把一个复杂的问题拆分为若干个简单的问题
2. 如何使用?
首先明确子查询就是一个普通的查询,当一个查询需要作为子查询使用时,用括号包裹即可
3. 需要注意
in中的子查询只能包含一个列
例如:查询财务部有哪些人
实例1:
正确的写法:select name from emp where dept_id in (select id from dept where name = "财务");
错误的写法:select name from emp where dept_id in (select * from dept where name = "财务");
关键字:exists
exists后跟子查询,子查询有结果是为True,没有结果时为False。为True时外层执行,为False外层不执行
如何使用?
实例2:
select from emp where exists (select from emp where salary > 1000);
前面 exists 后面
如果 后面 查询有结果时,前面 才会执行