首页 > 其他 > 详细

相关子查询与非相关子查询

时间:2014-03-24 13:40:49      阅读:445      评论:0      收藏:0      [点我收藏+]
子查询:嵌套在其他查询中的查询称之。 
子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。 
所有的子查询可以分为两类,即相关子查询和非相关子查询 
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 


总结:

嵌套查询是通过where子句的子查询返回内层查询的值作为查询条件,进而实现外层查询的查询结果。
相关子查询:执行查询的时候先取得外层查询的一个属性值,然后执行与此属性值相关的子查询,执行完毕后再取得外层父查询的下一个值,依次再来重复执行子查询;
不相关子查询:子查询的执行不需要提前取得父查询的值,只是作为父查询的查询条件。
索引:使用索引是为了加快查询速度。

相关子查询与非相关子查询,布布扣,bubuko.com

相关子查询与非相关子查询

原文:http://blog.csdn.net/mariofei/article/details/21934177

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!