子查询的概念及用法

子查询:嵌套在其他查询中的查询。
子查询又称内部查询,而包含子查询的语句称为外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询
1.非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
2.相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。因此非相关子查询比相关子查询效率要高。

用法举例说明:

--非相关子查询
select empno, lastname
  from employee
 where workdept = 'a00'
   and salary > (select avg(salary)
                   from employee
                  where workdept = 'a00'
                 ) –-子查询是一个独立的查询
                  
--相关子查询
select e1.empno, e1.lastname, e1.workdept
  from employee e1
 where salary > (select avg(salary)
                   from employee e2
                  where e2.workdept = e1.workdept
                ) –-依赖于外部查询结果
 order by e1.workdept

 

posted @ 2017-12-08 01:18  碧水幽幽泉  阅读(929)  评论(0编辑  收藏  举报