被遺忘的SQLServer比較運算子修飾詞

2021-08-24 19:16:19 字數 2260 閱讀 6104

sqlserver中有三個關鍵字可以修改比較運算子:all、any和some,其中some和any等價。

官方的參考文件

他們作用於比較運算子和子查詢之間,作用類似exists、not exists、in、not in以及其他邏輯意義,這些語法同樣被sqlserver2000支援但是很少看到有人用它們。

setnocount

onuse

tempdb

goif (

object_id (

't1' )

isnot

null )

drop

table

t1create

table

t1 (n

int )

insert

into

t1select

2union

select

3if (

object_id (

't2' )

isnot

null )

drop

table

t2create

table

t2 (n

int )

insert

into

t2select

1union

select

2union

select

3union

select

4select

*from

t2where n

>

all (

select n

from

t1 )

--4select

*from

t2where n

>

any (

select n

from

t1 )

--3,4

--select * from t2 where n>some(select n from t1) --3,4

select

*from

t2where n

=all (

select n

from

t1 )

--無資料

select

*from

t2where n

=any (

select n

from

t1 )

--2,3

--select * from t2 where n=some(select n from t1) --2,3

select

*from

t2where n

<

all (

select n

from

t1 )

--1select

*from

t2where n

<

any (

select n

from

t1 )

--1,2

--select * from t2 where n

select

*from

t2where n

<>

all (

select n

from

t1 )

--1,4

select

*from

t2where n

<>

any (

select n

from

t1 )

--1,2,3,4

--select * from t2 where n<>some(select n from t1)--1,2,3,4

setnocount

off注意,如果t1中包含null資料,那麼所有all相關的比較運算將不會返回任何結果,原因就不用多解釋了。而因為t1和t2表的null的存在他們和not exists之類的比較符會有一些區別。

比如下面兩句

select * from t2 a where not exists(select 1 from t1 where n>=a.n)

select * from t2 where n >all(select n from t1)

他們邏輯上意義很像但是對於null的處理卻是恰恰相反,第一句會忽略子查詢的null而把t2的null同時查出來,第二句卻是忽略了t2的null同時會因為t1中的null而無法查詢到資料。

被遺忘的SQLServer比較運算子修飾詞

sqlserver中有三個關鍵字可以修改比較運算子 all any和some,其中some和any等價。官方的參考文件 他們作用於比較運算子和子查詢之間,作用類似exists not exists in not in以及其他邏輯意義,這些語法同樣被sqlserver2000支援但是很少看到有人用它們...

被遺忘的SQLServer比較運算子修飾詞

sqlserver中有三個關鍵字可以修改比較運算子 all any和some,其中some和any等價。官方的參考文件 他們作用於比較運算子和子查詢之間,作用類似exists not exists in not in以及其他邏輯意義,這些語法同樣被sqlserver2000支援但是很少看到有人用它們...

被遺忘的角落有著被遺忘的人

如不是我變了模樣。便是你淡忘了時光。為自己的心門上了鎖。從此再也無人能愉悅。最怕此生決定忘記你,卻突然得到你的訊息。如果我的手不小心碰著你的手,你是會躲開,還是下意識牽住。能駕馭你的人,其實就是你心甘情願,視如生命愛的人。最好的時光,就是你喜歡我,我也喜歡你,可我們都還沒表白。非主流個性簽名 願意委...