相关子查询的执行顺序
一般先执行子查询,再执行主查询;但相关子查询例外。
相关子查询的概念
SQL> --相关子查询:将主查询中的值 作为参数传递给子查询
具体使用
SQL> select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal
2 from emp e
3 where sal > (select avg(sal) from emp where deptno=e.deptno);
EMPNO ENAME SAL AVGSAL
----------------------------------------------
7499 ALLEN 1600 1566.66667
7566 JONES 2975 2175
7698 BLAKE 2850 1566.66667
7788 SCOTT 3000 2175
7839 KING 5000 2916.66667
7902 FORD 3000 2175
-- 等价于下面的多表查询
select e.empno,e.ename,d.avgsal
from emp e,(select deptno,avg(sal) avgsal from emp group by deptno) d
where e.deptno = d.deptno and e.sal > d.avgsal;