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

來源:互聯網
上載者:User

標籤:

一、子查詢的基本類型之多行子查詢

(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-子查詢之多行子查詢&子查詢之多列子查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.