!不建议在select中使用子查询作为列,如果能使用关联查询替代,就尽量替代

一般子查询
select employee_id from employees where employee_id in (子查询结果)

高级子查询
//说白了就是子查询引用外部查询的值
##exist关键字
//exist就是替代in的
//in中的子查询返回一个集合,而exist返回一个bool值
//检查在子查询中是否有满足条件的记录(相当于将完成的字段值放入内层子查询进行查询处理)
select employee_id,last_name,salary,department_id from employees e1
where exists(
select ‘随便写’ from employees e2 where e2.manager_id =e1.employee_id
//如果子查询返回true(能查到值),外层查询就会认为当前行是满足条件的
//说人话就是将外部查询结果中,满足exit条件的返回
)
##内外关联(在子查询中引用外部查询的信息)
select e1.employee_id,
e1.last_name
from employees e1
where salary > (
select avg(salary)
from employees e2
where e2.department_id = e1.department_id
— 我们确实要薪水大于平均值
— 但是这个平均值不是确定值,而是和每个员工的对应值
)