关联子查询会引用外部查询中的一列或多列,这种子查询之所以被称为关联子查询,是因为他的确与外部语句相关。具体实现时,外部查询中的每一行都传输给子查询,子查询依次读取传递过来的每一行的值,并将其应用到子查询上,知道外部查询中的所有行都处理完为止,然后返回子查询结果。
例如:查询各个部门中,哪些员工的工资低于其所在部门的平均工资。
SQL>select empno,ename,sal,deptno from emp outer where sal<(select avg(sal) from emp inner where inner.deptno=outer.deptno)
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
7369 SMITH 800 20
7521 WARD 1250 30
7782 CLARK 2450 10
7844 TURNER 1500 30
7876 ADAMS 1100 20
7900 JAMES 950 30
7934 MILLER 1300 10
已选择 8 行。