前言
SOME、ANY、ALL是一种逻辑运算符,作用是将子查询返回的单列值的集合与查询的单个值作比较。SOME、ANY、ALL前面需跟比较运算符(>,<,>=,<=,=,<>)。这里只有当子查询中的值为单值 或者与子查询中的值完全相等时,才可以使用 = 号,否则就不能使用 = 号。SOME 是 ANY的一个同义词,功能相同。
在使用 ANY、ALL 时,前面必须跟比较运算符(>,<,>=,<=,=,<>),后面跟子查询语句。
一、ANY 关键字
功能类似于逻辑原算符 或( or )。
select * from table where a > any( ... )
-- 如果 any 后面跟的子查询返回的数据集中包含了 result1,result2,result3 三个值。
那么,上面的语句就可以看作:
select * from table where a > result1 or a > result2 or a > result3;
-- 即a大于子查询中的任意一个,等同于a大于子查询的最小值即可。
二、ALL 关键字
功能类似于逻辑运算符 且( and )。
select * from table where a > all( ... )
-- 如果 any 后面跟的子查询返回的数据集中包含了 result1,result2,result3 三个值。
那么,上面的语句就可以看作:
select * from table where a > result1 and a > result2 and a > result3;
-- 即a大于子查询中的每一个,等同于a大于子查询的最大值。
三、SOME 关键字
SOME 是 ANY的一个同义词,功能相同。功能类似于逻辑原算符 或( or )。
select * from table where a > any( ... )
-- 如果 any 后面跟的子查询返回的数据集中包含了 result1,result2,result3 三个值。
那么,上面的语句就可以看作:
select * from table where a > result1 or a > result2 or a > result3;
-- 即a大于子查询中的任意一个,等同于a大于子查询的最小值即可。