设为首页 收藏本站
查看: 767|回复: 0

[经验分享] oracle子查询详解1-bckong

[复制链接]

尚未签到

发表于 2018-9-13 10:52:32 | 显示全部楼层 |阅读模式
  原文出处:http://www.linuxidc.com/Linux/2012-03/56649.htm###
  子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
  使用子查询注意事项:
  子查询可以嵌套多层
  子查询需要圆括号()括起来
  子查询语法:
  SELECT     select_list
  FROM       table
  WHERE    expr operator
  (SELECT    select_list
  FROM                  table);
  l  子查询 (内查询) 在主查询之前一次执行完成。
  l  子查询的结果被主查询使用 (外查询)。
  举例:查询员工的工资大于JONES的员工信息
  分析过程如下:
  首先:查询JONES的员工工资是多少 :结果2975
  SQL> select sal from emp where ename='JONES';
  实际上我们要查询的是:薪资大于2975的员工的信息写法如下:
  SQL> select * from emp where sal>2975;
  //综合以上写出子查询的结果如下:
  SQL> select * from emp where sal>(select sal from emp where ename='JONES');
  注意:
  l  子查询要包含在括号内
  l  将子查询放在比较条件的右侧
  根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
  注意:
  l  单行操作符对应单行子查询,多行操作符对应多行子查询。
  单行操作符
  >、>=、 ( select sal from emp where empno=7521);
  //子查询含有组函数
  SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
  //子查询含有having子句查询部门的最小工资大于20号部门最小工资的部门号及最小工资数
  SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
  备注:子查询可以返回空行 没要查询到结果是可以的。
  多行子查询
  l   返回多行。
  l  使用多行比较操作符。
  操作符如下图:
  操作符
  描述
  In
  等于列表中的任何一个
  Any
  子查询返回的任意一个值比较 相同还有some
  All
  和子查询返回的所有值比较  
  Exists
  //查询薪水小于工作岗位CLERK的任何一个薪资的员工信息并且不包含工作岗位为CLERK的员工信息
  SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job'CLERK';
  //all与所有值比较 >all 代表的是大于查询结果的最大值
  SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job'CLERK';
  //查询岗位与部门编号为10相同的员工信息 不包含自己。
  SQL> select * from emp where job in(select job from emp where deptno=10) and deptno10;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-577654-1-1.html 上篇帖子: oracle sequence-pl 下篇帖子: oracle子查询详解2-bckong
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表