ANY、ALL 和 SOME

作者:vkvi 来源:千一网络(原创) 日期:2007-5-24

ANY、ALL 和 SOME 是 SQL 中的关键字,用它们可以修改引入子查询的比较运算符,在 SQL-92 标准里面,SOME 和 ANY 是等效的,所以我们只讨论 ANY 和 ALL。

说明:往往可以通过修改 SQL 语句,从而不使用 ANY、ALL 也可以实现相同的效果。

顾名思义,ANY 表示任意,ALL 表示所有。举例说明:>ANY (1,2,3),表示大于 1,2,3 中的任意一个数就满足条件,也就是说大于 1 便可以了;>ALL (1,2,3),表示大于 1,2,3 中的所有数才满足条件,也就是说大于 3 才可以。

 

=ANY 等价于 IN

where id=ANY (select sid from students)

等价于

where id in (select sid from students)

 

<>ANY 不表示 NOT IN

这个不好理解,举个例子。

宠物表
一字段:宠物名称。
两条记录:猫;狗。
养宠物表
两个字段:主人 宠物名称。
四条记录:张三 猫;张三 狗;李四 猫;王五 鸟。

说明:以上并不是一个好的数据库设计,这里只是为了说明 =ANY 和 NOT IN。

select * from 养宠物表 where 宠物名称 <>ANY (select 宠物名称 from 宠物表)

这会把所有记录显示出来,<>ANY (a,b,c) 表示不等于 a,或不等于 b,或不等于 c,由逻辑运算我们知道,这种情况总是存在的。

select * from 养宠物表 where 宠物名称 NOT IN (select 宠物名称 from 宠物表)

这会把“王五 鸟”这条记录显示出来,因为只有王五养的宠物在宠物表中不存在。NOT IN (a,b,c) 表示既不等于 a,也不等于 b,也不等于 c。

 

<>ALL 等价于 NOT IN

你前面那位网友看了:北温泉缙云山一日游-游记

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
赞助商们
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他