码迷,mamicode.com
首页 > 数据库 > 详细

Oracle-28-子查询之多行子查询&子查询之多列子查询

时间:2016-04-15 10:36:33      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

一、子查询的基本类型之多行子查询

(1)使用IN操作符进行多行子查询。(总结:IN操作符后可用多行子查询)

比如:查询各个职位中工资最高的员工信息。


SQL>select ename, job, sal from emp where salin (select max(sal) from emp group by job);——单列子查询



SQL>select ename, job, sal from emp where (sal,job)in (select max(sal), job from emp group by job);——多列子查询

 

(2)使用exists操作符进行多行子查询。(总结:exists操作符后可用多行子查询)

引入exists的目的:在一些情况下,只需要子查询返回一个真值或是假值。如果只考虑是否满足判断条件,而数据本身并不重要,可以使用exists操作符来定义子查询。

比如:


SQL>select empno, ename, sal from emp where exists (select * from dept where deptno =‘40’)


【注意】以上SQL语句如果子查询(select * from dept wheredeptno = ‘40’)有结果,那么exists前面的语句会执行,如果exists后面的没结果,那么其前面的不会执行。


(3)使用ALL操作符进行多行子查询。(总结:all操作符后可用多行子查询)

比如:


SQL>select empno, ename, sal, job from emp where sal < all (select avg(sal) from emp group by job);


【注意】all操作符比较子查询返回列表中的每一个值。

<all为小于最小的

>all为大于最大的

=all无意义,一般不写。

 

解释:子查询(selectavg(sal) from emp group by job)是计算每个职位的平均工资,那么不同职位的平均工资不同,有高有低,所以<all是小于最小的,即小于最低平均工资。同理>all是大于最大的, 即大于最高平均工资。

 

(4)使用ANY操作符进行多行子查询。(总结:any操作符后可用多行子查询)

比如:


SQL>select empno, ename, sal, job from emp where sal > any (select avg(sal) from group by jon)

 

【注意】any操作符后接多行子查询返回列表中的每一个值。

<any为小于最大的

>any为大于最小的。

 

1:练习all操作符后接多行子查询。

解:当前sc表数据:


技术分享


现在将同一门课程分为一组,计算均分,即按照cno值相同分组求平均:


技术分享


用all操作符后接多行子查询,查看小于所有均分中最小值(79.25)的学生信息:


技术分享


用all操作符后接多行子查询,查看大于所有均分中最大值(80.32)的学生信息:


技术分享

 

2:练习any操作符后接多行子查询。

解:当前sc表数据:


技术分享


现在将同一门课程分为一组,计算均分,即按照cno值相同分组求平均:


技术分享


用any操作符后接多行子查询,查看小于所有均分中最大值(80.32)的学生信息:


技术分享


用any操作符后接多行子查询,查看大于所有均分中最小值(79.25)的学生信息:


技术分享

 

二、子查询的基本类型之多列子查询

多列子查询要返回多列。

比如:查询哪些员工的工资为所任职位中最高的。


SQL>selecte mpno, ename, sal, job from emp where (sal, job) in (select max(sal), job from emp group by job);


【总结】

单列子查询就是子查询中只有1个列名,如(selectavg(sal)from emp group by job);多列子查询就是子查询中不止1个列名,如(selectmax(sal), jobfrom emp group by job)。

Oracle-28-子查询之多行子查询&子查询之多列子查询

标签:

原文地址:http://blog.csdn.net/wy_0928/article/details/51158585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!