– 高级子查询
嵌套子查询
– 在通常的子查询中,子查询是以嵌套的方式写在父查询的WHERE、HAVING、FROM子句中,所以被 称为嵌套子查询。
注意:嵌套子查询可以单独运行
– 嵌套子查询的执行过程:
– 1.子查询首先执行一次;
– 2.用来自子查询的值确认或取消父查询的候选行。查询比本部门平均薪水高的员工姓名,薪水 select empno,ename,sal from emp e ,(select deptno,avg(sal) avgsal from emp group by deptno) d where e.deptno =d.deptno and e.sal >d.avgsal;
相关子查询
相关子查询不可以单独运行,依赖于主查询的某列
– 相关子查询的执行过程:
– ① 主查询每执行一次,获取查询数据
– ② 子查询使用步骤①中获取的数据,执行确认或取消的判断
– ③ 循环步骤①②的操作,直到最后一条数据为止在select子句中使用相关子查询
-- 查询所有部门名称和人数 select d.dname 部门名称, (select count(ename) from emp where deptno = d.deptno) 人数 from dept d; -- 注意连接条件与子查询的条件相等,一般需