首页 > 数据库技术 > 详细

oracle 子查询

时间:2019-03-30 13:02:33      阅读:128      评论:0      收藏:0      [点我收藏+]

多行子查询

  • 单行子查询只返回一行结果
  • 多行子查询返回多行结果
  • 多行子查询结果操作符(in, any, all)
  • any 与任意值比较
  • all 与所有值比较
  • in 属于集合

in

  • in集合中有空值,忽略空值,返回不为空的行;
  • not in 集合中有空值,返回空

any all

  • <all 小于最大
  • >all 大于最小
  • =any 相当于 in
  • >all 大于最大
  • <all 小于最小
  • != all 相当于 not in

多列子查询

select empno, ename, sal, job from emp
    where (job, sal) = (select job, sal from emp where empno=7788)
        and empno <> 7788;
        
select empno, ename, sal, job from emp
    where (job, sal) in (select job, sal from emp where empno=7788)
        and empno <> 7788;

相关子查询

外层值参与内层查询的运算,执行顺序为 外层取值 - 传到内层进行运算 - 内层运算返回值参与外层运算 (循环交错查询)

select e.ename,e.sal,e.deptno
from emp e where e.sal > (select avg(s.sal) from emp s
                                        where e.deptno = s.deptno);

非相关子查询

内层查询与外层查询无关,子查询只执行一次,返回结果后参与外层运算

oracle 子查询

原文:https://www.cnblogs.com/hyang0/p/10626453.html

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