ITPub博客

首页 > 数据库 > Oracle > 区分关联子查询和非关联子查询

区分关联子查询和非关联子查询

原创 Oracle 作者:llnnmc 时间:2019-05-21 09:16:17 0 删除 编辑

子查询可区分为关联子查询和非关联子查询,他们和外层查询之间的执行顺序和关系是不同的。

关联子查询:

在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,关联子查询的信息流是双向的,外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录,之后外部查询根据返回的记录做出决策。

select * from dept d where exists(select * from emp e where e.deptno = d.deptno);

特点:

1、先执行外层查询

2、再执行内层查询

非关联子查询:

非相关子查询是独立于外部查询的子查询,子查询执行完毕后将值传递给外部查询。

select * from emp where sal = (select max(sal) from emp);

特点:

1、先执行内层查询

2、再执行外层查询

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2645019/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-12-29

  • 博文量
    101
  • 访问量
    111623