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
總結
到此這篇關於SQL Server子查詢的文章就介紹到這瞭,更多相關SQL Server子查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found