读《Beginning SQL Server 2005 Programming》,读到相关子查询,找了些中文的讲解,学习。
虽然说不是第一次接触相关子查询,不过没怎么用过,学了一遍又一遍,还是忘,呵呵。
再学一次,以后遇到了继续。^_^
相关子查询依赖于外部查询。外部查询和子查询是有联系的,尤其在子查询的WHERE语句中更是如此。相关子查询的工作方式是:在子查询中找到外部查询的参考时执行外部查询,此时将结果返回给子查询。然后在外部查询返回的结果集上执行子查询操作。
相关子查询中的子查询在外部查询返回的结果集上进行执行,其效率肯定下降。子查询的性能完全依赖于查询和有关的数据。但是,如果相关子查询的语句写得很有效率,则其执行性能能够胜过那些使用几个连接和临时表的程序。
示例:显示薪水高于部门平均薪水的所有雇员。
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