MySQL子查询
子查询
- 查询支持嵌套使用
- 查询各学生的语文、数学、英语的成绩
什么是子查询
当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询)
什么时候用?
当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时,
例如:给出一个部门名称,需要获得该部门所有的员工信息
分析:
1.需要先确定部门的 id
2.然后才能通过 id 确定员工
解决问题的方式是把一个复杂的问题拆分为若干个简单的问题
如何使用?
首先明确子查询就是一个普通的查询,当一个查询需要作为子查询使用时,用括号包裹即可
需要注意
in 中的子查询只能包含一个列
例如:查询财务部有哪些人
正确的写法: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 外层不执行
如何使用?
select from emp where exists (select from emp where salary > 1000);
前面 exists 后面 如果 后面 查询有结果时,前面 才会执行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 你真是一个美好的人类!