SQL Server子查詢的深入理解
當(dāng)由where子句指定的搜索條件指向另一張表時(shí),就需要使用子查詢或嵌套查詢。
1 子查詢
子查詢是一個(gè)嵌套在select、insert、update或delete語(yǔ)句或其他子查詢中的查詢。任何允許使用表達(dá)式的地方都可以使用子查詢。
1.1語(yǔ)法規(guī)則:
子查詢的select查詢總使用圓括號(hào)括起來(lái)不能包括compute或for browse子句如果同時(shí)指定top子句,則可能只包括order by子句子查詢最多嵌套32層,個(gè)別查詢可能會(huì)不支持32層嵌套任何可以使用表達(dá)式的地方都可以使用子查詢,主要它返回的是單個(gè)值如果某個(gè)表只出現(xiàn)在子查詢中而不出現(xiàn)在外部查詢中,那么該表中的列就無(wú)法包含在輸出中
1.2 語(yǔ)法格式:
where 查詢表達(dá)式 [not] in(子查詢)where 查詢表達(dá)式 比較運(yùn)算符 [any|all] (子查詢)where [not] exists (子查詢)
2 嵌套查詢
嵌套查詢是指將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的where子句或having短語(yǔ)的條件中的查詢。
嵌套查詢中上層的查詢塊稱為外側(cè)查詢或父查詢,下層查詢塊稱為內(nèi)層查詢或子查詢。SQL語(yǔ)言允許多層嵌套,但是在子查詢中不允許出現(xiàn)order by子句,order by子句只能用在最外層的查詢中。
嵌套查詢的處理方法是:先處理最內(nèi)側(cè)的子查詢,然后一層一層地向上處理,直到最外層的查詢塊。
2.1 簡(jiǎn)單的嵌套查詢
子查詢的運(yùn)算符含有=、<>、<、>、<=、>=
三個(gè)查詢:
第一個(gè):查詢年紀(jì)>25的老師所教的學(xué)生
第二個(gè):查詢年紀(jì)>25的老師
第三個(gè):驗(yàn)證查詢到的學(xué)生信息

對(duì)比:當(dāng)子查詢中的分那會(huì)的結(jié)果不是一個(gè)時(shí),父查詢無(wú)法正常工作

2.2 帶IN的嵌套查詢
當(dāng)子查詢返回一系列值時(shí),適合帶IN的嵌套查詢。

2.3 NOT IN

2.4 SOME

2.5 ANY

2.6 ALL

2.7 EXIST

總結(jié)
到此這篇關(guān)于SQL Server子查詢的文章就介紹到這了,更多相關(guān)SQL Server子查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
delete誤刪數(shù)據(jù)使用SCN號(hào)恢復(fù)(推薦)
這篇文章主要介紹了使用scn號(hào)恢復(fù)誤刪數(shù)據(jù)問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
SQL?server插入報(bào)錯(cuò):當(dāng)?IDENTITY_INSERT?設(shè)置為?OFF?時(shí)不能為表?‘XXX‘?
這篇文章主要介紹了SQL?server插入報(bào)錯(cuò):當(dāng)?IDENTITY_INSERT?設(shè)置為?OFF?時(shí),不能為表?‘XXX‘?中的標(biāo)識(shí)列插入顯式值的問題,該問題是給SQL server數(shù)據(jù)庫(kù)中的某個(gè)表插入數(shù)據(jù)引起的報(bào)錯(cuò),一般出現(xiàn)在該表為自增的情況下,本文給大家分享解決方法,需要的朋友可以參考下2023-09-09
揭秘SQL Server 2014有哪些新特性(1)-內(nèi)存數(shù)據(jù)庫(kù)
微軟SQL Server 2014提供了眾多激動(dòng)人心的新功能,但其中最讓人期待的特性之一就是代號(hào)為” Hekaton”的內(nèi)存數(shù)據(jù)庫(kù)了,內(nèi)存數(shù)據(jù)庫(kù)特性并不是SQL Server的替代,而是適應(yīng)時(shí)代的補(bǔ)充,現(xiàn)在SQL Server具備了將數(shù)據(jù)表完整存入內(nèi)存的功能。那么今天我們就先來(lái)看看內(nèi)存數(shù)據(jù)庫(kù)2014-08-08
Sql Server中實(shí)現(xiàn)行數(shù)據(jù)轉(zhuǎn)為列顯示
這篇文章主要介紹了Sql Server中實(shí)現(xiàn)行數(shù)據(jù)轉(zhuǎn)為列顯示,文章基于Sql語(yǔ)句的相關(guān)資料展開如何實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)為列顯的操作過程,需要的小伙伴可以參考一下2022-04-04
SQL Server 復(fù)制需要有實(shí)際的服務(wù)器名稱才能連接到服務(wù)器
今天在做sql Server 2005的實(shí)驗(yàn)的時(shí)候碰到的問題,問題描述很清楚,懷疑是我以前給計(jì)算機(jī)修改了名稱而導(dǎo)致的.可以用select @@servername和select serverproperty ('servername')對(duì)照一下,兩個(gè)的結(jié)果是否一樣2012-06-06

