SQL Server 之 子查詢與嵌套查詢


當由where子句指定的搜索條件指向另一張表時,就需要使用子查詢或嵌套查詢。

1 子查詢

子查詢是一個嵌套在select、insert、update或delete語句或其他子查詢中的查詢。任何允許使用表達式的地方都可以使用子查詢。

1.1語法規則:

  • 子查詢的select查詢總使用圓括號括起來
  • 不能包括compute或for browse子句
  • 如果同時指定top子句,則可能只包括order by子句
  • 子查詢最多嵌套32層,個別查詢可能會不支持32層嵌套
  • 任何可以使用表達式的地方都可以使用子查詢,主要它返回的是單個值
  • 如果某個表只出現在子查詢中而不出現在外部查詢中,那么該表中的列就無法包含在輸出中

1.2 語法格式:

  • where 查詢表達式 [not] in(子查詢)
  • where 查詢表達式 比較運算符 [any|all] (子查詢)
  • where [not] exists (子查詢)

 

2 嵌套查詢

嵌套查詢是指將一個查詢塊嵌套在另一個查詢塊的where子句或having短語的條件中的查詢。

嵌套查詢中上層的查詢塊稱為外側查詢或父查詢,下層查詢塊稱為內層查詢或子查詢。SQL語言允許多層嵌套,但是在子查詢中不允許出現order by子句,order by子句只能用在最外層的查詢中。

嵌套查詢的處理方法是:先處理最內側的子查詢,然后一層一層地向上處理,直到最外層的查詢塊。

2.1 簡單的嵌套查詢

子查詢的運算符含有=、<>、<、>、<=、>=

三個查詢:

第一個:查詢年紀>25的老師所教的學生

第二個:查詢年紀>25的老師

第三個:驗證查詢到的學生信息

對比:當子查詢中的分那會的結果不是一個時,父查詢無法正常工作

2.2 帶IN的嵌套查詢

當子查詢返回一系列值時,適合帶IN的嵌套查詢。

 

2.3 NOT IN

 

2.4 SOME

 

2.5 ANY

 

2.6 ALL

 

2.7 EXIST

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM