SQLServer中有多个重视字能够修改比较运算符:All、Any和Some,当中Some和Any等价。
合法的参阅文档
她们功效于相比较运算符和子查询之间,成效类似Exists、not exists、in、not
in以及任何逻辑意义,这么些语法同样被SQLServer两千支持不过非常少见到有人用它们。

set nocount on
use tempdb
go
if (object_id (‘t1’ ) is not null ) drop table t1
create table t1 (n int )
insert into t1 select 2 union select 3
if (object_id (‘t2’ ) is not null ) drop table t2
create table t2 (n int )
insert into t2 select 1 union select 2 union select 3 union select 4
select * from t2 where n> all (select n from t1 ) –4
select * from t2 where n> any (select n from t1 ) –3,4
–select * from t2 where n>some(select n from t1) –3,4
select * from t2 where n= all (select n from t1 ) –无数据
select * from t2 where n= any (select n from t1 ) –2,3
–select * from t2 where n=some(select n from t1) –2,3
select * from t2 where n< all (select n from t1 ) –1
select * from t2 where n< any (select n from t1 ) –1,2
–select * from t2 where n<some(select n from t1) –1,2
select * from t2 where n<> all (select n from t1 ) –1,4
select * from t2 where n<> any (select n from t1 ) –1,2,3,4
–select * from t2 where n<>some(select n from t1)–1,2,3,4
set nocount off

比如下边两句 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而一点计策也施展不出查询到数码。

只顾,如若t第11中学包蕴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同一时候会因为t第11中学的null而望尘不及查询到数量。

注意,假定t第11中学含有null数据,那么全部All相关的可比运算将不会回到任何结果,原因就不用多解释了。而因为t1和t2表的null的留存他们和not
exists之类的可比符会有一部分分别。

复制代码 代码如下: