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
等价于
<>ANY 不表示 NOT IN
这个不好理解,举个例子。
说明:以上并不是一个好的数据库设计,这里只是为了说明 =ANY 和 NOT IN。
这会把所有记录显示出来,<>ANY (a,b,c) 表示不等于 a,或不等于 b,或不等于 c,由逻辑运算我们知道,这种情况总是存在的。
这会把“王五 鸟”这条记录显示出来,因为只有王五养的宠物在宠物表中不存在。NOT IN (a,b,c) 表示既不等于 a,也不等于 b,也不等于 c。
<>ALL 等价于 NOT IN