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 后面 如果 后面 查询有结果时,前面 才会执行

------ 本文结束  感谢阅读 ------