日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

            歡迎訪問(wèn) 生活随笔!

            生活随笔

            當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

            编程问答

            Oracle 的关联子查询(correlated subquery) 简介.

            發(fā)布時(shí)間:2025/3/20 编程问答 45 豆豆
            生活随笔 收集整理的這篇文章主要介紹了 Oracle 的关联子查询(correlated subquery) 简介. 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

            相信 接觸過(guò) ocp考題既, 都會(huì)見(jiàn)到 correlated subquery的字眼.


            correlated subquery的中文名稱就是相關(guān)子查詢呢?


            1. 什么是子查詢

            這個(gè)很簡(jiǎn)單,? 子查詢就是嵌套在主查詢里的查詢了.

            例如, 在scott 模式下我想查找所有比Allen 工資高的員工


            我們可以寫(xiě)成這樣:

            select a.* from emp a, emp b where a.sal > b.sal and b.ename = 'ALLEN'


            當(dāng)然上面的查詢語(yǔ)句自不過(guò)是簡(jiǎn)單的連接查詢, 并沒(méi)有用到子查詢.

            寫(xiě)成這樣就是子查詢了:

            select * from emp where sal > ( select sal from emp where ename = 'ALLEN')

            第二行where 條件中出現(xiàn)了另1個(gè)子查詢.? 反而令sql語(yǔ)句更加容易理解了.



            2. 什么是非關(guān)聯(lián)子查詢

            而子查詢也可以分成關(guān)聯(lián)子查詢和非關(guān)聯(lián)子查詢,? 上面那條sql 語(yǔ)句就是非關(guān)聯(lián)子查詢.

            所謂非關(guān)聯(lián)子查詢就是 指子查詢可以脫離主查詢獨(dú)立執(zhí)行.


            再舉個(gè)例子:

            我想找出每個(gè)部門(mén)中最高工資的人.

            sql語(yǔ)句可以寫(xiě)成如下:

            select a.deptno,a.* from emp a where (a.deptno, a.sal) in (select deptno, max(sal) from emp group by deptno)
            其中的 子查詢 select deptno, max(sal) from emp group by deptno

            是可以獨(dú)立執(zhí)行的.


            而且對(duì)于整個(gè)查詢來(lái)講, 是執(zhí)行一次子查詢先, 再執(zhí)行主查詢.




            3. 什么是關(guān)聯(lián)子查詢

            所謂關(guān)聯(lián)子查詢就是指子查詢與主查詢之間有條件關(guān)聯(lián),? 不能獨(dú)自執(zhí)行.

            看回上面的需求, 我們換一種寫(xiě)法:

            select a.deptno, a.* from emp a where a.sal = (select max(b.sal) from emp b where b.deptno = a.deptno)


            上面的例子就是用到關(guān)聯(lián)子查詢了,? 其中的子查詢因?yàn)闂l件關(guān)聯(lián)了主查詢的表. 所以子查詢不能單獨(dú)執(zhí)行.


            對(duì)于關(guān)聯(lián)子查詢來(lái)講,? 是自外到內(nèi)的, 先執(zhí)行外查詢,.

            例如上面的例子,?? 對(duì)于主表a來(lái)間,? 對(duì)于每1個(gè)deptno,? 都要執(zhí)行一次子查詢.



            關(guān)聯(lián)子查詢還有1個(gè)限制, 就是子查詢不能返回多于1行的數(shù)據(jù).

            否則會(huì)出現(xiàn)如下的錯(cuò)誤信息:


            ORA-01427: 單行子查詢返回多個(gè)行
            01427. 00000 -? "single-row subquery returns more than one row"
            *Cause:?? ?
            *Action:




            總結(jié)

            以上是生活随笔為你收集整理的Oracle 的关联子查询(correlated subquery) 简介.的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

            如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。