where条件里有any是什么意思?

 我来答
blademaster717
2015-01-22 · TA获得超过1457个赞
知道小有建树答主
回答量:882
采纳率:97%
帮助的人:372万
展开全部
SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。
他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not

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 unionselect 3

if (object_id ('t2') is not null)drop table t2
create table t2 (n int)
insert into t2 select 1 unionselect 2 union select 3 union select 4

-- t1表数据 2,3
-- t2表数据 1,2,3,4
-- '>all' 表示:t2表中列n的数据大于t1表中列n的数据的数,结果只有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(selectn 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(selectn 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(selectn 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

注意:1. =any 与in 等效.
2. 如果t1中包含null数据,那么所有All相关的比较运算将不会返回任何结果。因为t1和t2表的null的存在他们和notexists之类的比较符会有一些区别。
比如下面两句

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

select * from t2 where n > all(select n from t1)
他们逻辑上意义很像但是对于null的处理却是恰恰相反,第一句会忽略子查询的null而把t2的null同时查出来,第二句却是忽略了t2的null同时会因为t1中的null而无法查询到数据。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庄经略7s
2015-01-22 · TA获得超过155个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:216万
展开全部
任意一个,只要满足一个即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式