关联子查询和非关联子查询
1、关联子查询
-
说明
外层查询的每一行数据,内部查询都会再查询一次。
-
特点
1、子查询不能单独运行,是和外查询相关的
2、先执行外层查询,再执行内层查询
-
示例
如下例,在子查询中用到了外层查询的字段(t.deptno),且不能单独运行(因为用到了外层查询的字段)
select t.*, t.rowid from dept t where exists (select 1 from emp e where e.deptno = t.deptno);
2、非关联子查询
-
说明
子查询先将值查询出来,然后再返回给外层查询。
-
特点
1、子查询能单独运行
2、先执行内层查询,再执行外层查询
-
示例
如下所示,子查询的语句可以单独执行--》 select max(e.deptno) from emp e
select t.*, t.rowid from dept t where t.deptno = (select max(e.deptno) from emp e);