sql集合運(yùn)算符使用方法
(1)IN運(yùn)算符:它可以用來(lái)匹配一個(gè)固定集合中的某一項(xiàng)。比如說(shuō)一個(gè)集合里面的年份有(2001,2003,2005),那么就可以有:
SELECT * FROM T_Book
WHERE FYearPublished IN(2001,2003,2005)
IN運(yùn)算符,除了支持從固定的集合里面去匹配,當(dāng)然也支持動(dòng)態(tài)的集合方式去匹配。比如如下方式:
SELECT * FROM T_Reader
WHERE FYearOfJoin IN
(
select FYearPublished FROM T_Book
)
(2)ANY和SOME集合運(yùn)算符:在SQL SERVER里面,ANY和SOME是同義詞,二者的用法和功能一樣(一樣還搞兩個(gè))。相比于IN運(yùn)算符,ANY和SOME需要與其它的比較符(大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比較符需要在它們的前面。
SELECT * FROM T_Reader
WHERE FYearOfJoin =ANY
(
select FYearPublished FROM T_Book
)
注意:和IN 運(yùn)算符不同,ANY 和SOME運(yùn)算符不能與固定的集合相匹配,比如下面的SQL 語(yǔ)句是錯(cuò)誤的:
SELECT * FROM T_Book
WHERE FYearPublished<ANY(2001,2003,2005)
(3)ALL集合運(yùn)算符:在SQL SERVER里面,ALL運(yùn)算符也需要與其它的比較符(大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比較符需要在它們的前面。
SELECT * FROM T_Book
WHERE FYearPublished<ALL
(
SELECT FYearOfJoin FROM T_Reader
)
注意:
I、與ANY和SOME 運(yùn)算符相同,ALL 運(yùn)算符同樣不能與固定的集合相匹配,比如下面的SQL 語(yǔ)句是錯(cuò)誤的:
SELECT * FROM T_Book
WHERE FYearPublished<ALL(2001,2003,2005)
II、關(guān)于使用ALL運(yùn)算符,還有一項(xiàng)需要注意,那就是這個(gè)ALL子查詢結(jié)果為空時(shí),匹配的結(jié)果并不是以空的方式來(lái)處理,而是相當(dāng)于全部匹配成功。所以在使用ALL運(yùn)算符的時(shí)候,這一個(gè)問(wèn)題很容易在系統(tǒng)中造成BUG,因此使用時(shí)必須注意。比如:
SELECT * FROM T_Book
WHERE FYearPublished<ALL
(
SELECT FYearOfJoin FROM T_Reader
WHERE FProvince = 'JiangSu'
)
如果ALL子查詢的結(jié)果為空時(shí),則將會(huì)取SELECT FYearOfJoin FROM T_Reader的全部結(jié)果來(lái)作為成功匹配的結(jié)果。
(4)EXISTS集合運(yùn)算符:和IN、ANY、SOME、ALL等運(yùn)算符不同,EXISTS運(yùn)算符是單目運(yùn)算符,它不與列匹配,因此它也不要求待匹配的集合是單列的。EXISTS運(yùn)算符用來(lái)檢查每一行是否匹配子查詢,可以認(rèn)為EXISTS就是用來(lái)測(cè)試子查詢的結(jié)果是否為空,如果結(jié)果集為空則匹配結(jié)果為false,否則匹配結(jié)果為true。
SELECT * FROM T_Category
WHERE EXISTS
(
SELECT * FROM T_Book
WHERE T_Book. FCategoryId = T_Category.FId
AND T_Book. FYearPublished<1950
)
在EXISTS后的子查詢中,SQL對(duì)T_Category表中的每一行數(shù)據(jù)到子查詢中進(jìn)行匹配,測(cè)試T_Book 表中是否存在FCategoryId 字段值等于當(dāng)前類別主鍵值且出版年份在1950 年之前的書(shū)籍。
相關(guān)文章
sqlserver2022附加數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的問(wèn)題解決
附加數(shù)據(jù)庫(kù)的目的,進(jìn)行數(shù)據(jù)庫(kù)的轉(zhuǎn)移,將需要的數(shù)據(jù)庫(kù),進(jìn)行轉(zhuǎn)移,本文主要介紹了sqlserver2022附加數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
SQLSERVER數(shù)據(jù)備份文件的分割備份方法
這篇文章主要介紹了SQLSERVER數(shù)據(jù)備份文件的分割備份方法 ,需要的朋友可以參考下2014-12-12
sql 自定義百分比轉(zhuǎn)換小數(shù)函數(shù)代碼
sqlserver中自定義百分比轉(zhuǎn)換小數(shù)函數(shù),需要的朋友可以參考下。2011-09-09
hive中將string數(shù)據(jù)轉(zhuǎn)為bigint的操作
這篇文章主要介紹了hive中將string數(shù)據(jù)轉(zhuǎn)為bigint的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
擴(kuò)展性很好的一個(gè)分頁(yè)存儲(chǔ)過(guò)程分享
擴(kuò)展性很好的一個(gè)分頁(yè)存儲(chǔ)過(guò)程分享,需要的朋友可以參考下。2011-11-11
三種SQL分頁(yè)查詢的存儲(chǔ)過(guò)程代碼
三種SQL分頁(yè)查詢的存儲(chǔ)過(guò)程代碼,需要的朋友可以參考下。2011-12-12
動(dòng)態(tài)給表添加刪除字段并同時(shí)修改它的插入更新存儲(chǔ)過(guò)程
有一個(gè)表,用戶需要在后臺(tái)操作它,希望能對(duì)它動(dòng)態(tài)進(jìn)行添加刪除字段2011-11-11

