oracle高级查询之相关子查询
在子查询中一般先执行子查询,在执行住查询,但是相关子查询列外
相关子查询就是把主查询的值作为参数传递给子查询
例子:找到员工表中薪水大于平均薪水员工
方法一:select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal
from emp e
where sal>(select avg(sal) from emp where deptno=e.deptno)
即是子查询中的deptno需要依赖主查询表中员工所在的部门,需要把主查询表中的e.deptno传递给子查询===
===============================
方法二
select e.empno ,e.ename e.sal, 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;
相关子查询比直接子查询性能高