程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 用SQL進行嵌套查詢

用SQL進行嵌套查詢

編輯:關於Oracle數據庫

  在select查詢語句裡可以嵌入select查詢語句,稱為嵌套查詢。有些書上將內嵌的select語句稱為子查詢,子查詢形成的結果又成為父查詢的條件。

  子查詢可以嵌套多層,子查詢操作的數據表可以是父查詢不操作的數據表。子查詢中不能有order by分組語句。

  4.4.1 簡單嵌套查詢

  在【命令編輯區】執行下列語句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal>=(select sal from scott.emp where ename='WARD');   ―――――――――――――――――――――――――――――――――――――

  單擊【執行】按鈕,出現如圖4.19所示的結果。

  【參見光盤文件】:\第4章\4.4\441.sql。

  在這段代碼中,子查詢select sal from scott.emp where ename='WARD'的含義是從emp數據表中查詢姓名為WARD的員工的薪水,父查詢的含義是要找出emp數據表中薪水大於等於WARD的薪水的員工。上面的查詢過程等價於兩步的執行過程。

  (1)執行“select sal from scott.emp where ename='WARD'”,得出sal=1250;

  (2)執行“select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal>=1250;”

  4.4.2 帶【in】的嵌套查詢

  在【命令編輯區】執行下列語句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal in (select sal from scott.emp where   ename='WARD');

  ―――――――――――――――――――――――――――――――――――――

  單擊【執行】按鈕,出現如圖4.20所示的結果。

  【參見光盤文件】:\第4章\4.4\442.sql。

  上述語句完成的是查詢薪水和WARD相等的員工,也可以使用【not in】來進行查詢。 4.4.3 帶【any】的嵌套查詢

  在【命令編輯區】執行下列語句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >any(select sal from scott.emp where   job='MANAGER');

  ―――――――――――――――――――――――――――――――――――――

  單擊【執行】按鈕,出現如圖4.21所示的結果。

  【參見光盤文件】:\第4章\4.4\443.sql。

  帶any的查詢過程等價於兩步的執行過程。

  (1)執行“select sal from scott.emp where job='MANAGER'”,其結果如圖4.22所示。

  【參見光盤文件】:\第4章\4.4\443-1.sql。

  (2)查詢到3個薪水值2975、2850和2450,父查詢執行下列語句。

  【參見光盤文件】:\第4章\4.4\443-2.sql。

  ――――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >2975 or sal>2850 or sal>2450;   ――――――――――――――――――――――――――――――――――――――

  4.4.4 帶【some】的嵌套查詢

  在【命令編輯區】執行下列語句。

  ―――――――――――――――――――――――――――――――――――――

  select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =some(select sal from scott.emp where   job='MANAGER');

  ―――――――――――――――――――――――――――――――――――――

  單擊【執行】按鈕,出現如圖4.23所示的結果。

  【參見光盤文件】:\第4章\4.4\444.sql。

  帶some的嵌套查詢與any的步驟相同。

  (1)子查詢,執行“select sal from scott.emp where job='MANAGER'”,其結果如圖4.22所示。

  (2)父查詢執行下列語句。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved