1.Oracle的嵌套子查詢

來源:互聯網
上載者:User

 

所謂嵌套子查詢是指,子查詢是一個獨立的查詢不與外部查詢相關,子查詢將被先執行,而且只被執行一次,子查詢執行完成後,再執行外部的查詢,外部查詢在執行過程中會使用到子查詢的結果。
下面是一個嵌套子查詢的例子:
select ename,sal
from emp
where sal >
(select avg(sal) from emp);

執行順序:
其含義是找出在emp員工中所有工資要高於平均水平的員工的姓名和工資
在這裡oracle將會先執行select avg(sal) from emp這個子查詢然後,然後在執行外部的查詢。
對於嵌套在查詢有幾點需要注意:
1. 子查詢一定要包含在一對括弧內。
2. 將子查詢放在比較子的右邊
3. “order by”在子查詢中是不需要,除非當你想使用一個top-n的分析
4. 當你的子查詢結果預計只有一個時請使用單行操作符,當你的子查詢結果預計有多個時,請使用多行操作符。
這裡所謂的當行操作符就是我們常用的(>,<,>=,<=,<>等等),所謂多行操作符就是在oracle的子查詢中使用in,all,any,some,not in等等
例如下面這段SQL語句的意義是找出那些deptno為20的人的姓名和工資
Select ename,sal
From emp
Where empno in
(
Select empno from emp where deptno = 20
);
當然這裡我們完全沒有必要使用子查詢,之所以在這裡用了子查詢是因為,我們說明這裡的子查詢返回了多個結果,我們必須使用多行操作符。

子查詢的效率要低於關聯的那種。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.