oracle高级查询之相关子查询

在子查询中一般先执行子查询,在执行住查询,但是相关子查询列外

相关子查询就是把主查询的值作为参数传递给子查询

例子:找到员工表中薪水大于平均薪水员工

oracle高级查询之相关子查询_第1张图片

方法一: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;

 

相关子查询比直接子查询性能高

你可能感兴趣的:(数据库)