Skip to content

ANY、SOME、ALL 操作符


在 SQL 查询中,ANYSOMEALL 是用于多值比较的操作符。
它们通常与子查询配合使用,用来判断某个值是否满足子查询结果集中的任意一个所有值

ANYSOME 在 SQL 中完全等价,可以互换。
它们用于将一个值与子查询返回的多个值逐一比较,只要其中有一个结果满足条件,表达式就为真(TRUE)。

  • 语法:
表达式 运算符 ANY (子查询)
-- 或
表达式 运算符 SOME (子查询)

常见运算符:=, <>, >, <, >=, <=

  • 示例:
SELECT name, salary
FROM emp
WHERE salary > ANY (
SELECT salary FROM emp WHERE dept = '销售部'
);

含义:只要当前员工工资 大于销售部中任意一个人 的工资,就符合条件。换句话说,只要工资高于销售部中最低工资即可。

可等价理解为:
salary > (销售部最低工资)

ALL 用于判断一个值是否与子查询返回的所有值都满足条件。只有当每一次比较都成立时,整个表达式才为真(TRUE)。

  • 语法:
表达式 运算符 ALL (子查询)
  • 示例:
SELECT name, salary
FROM emp
WHERE salary > ALL (
SELECT salary FROM emp WHERE dept = '销售部'
);

含义: 当前员工工资必须 高于销售部中所有人 的工资,也就是高于销售部中最高工资

等价于:

salary > (SELECT MAX(salary) FROM emp WHERE dept = '销售部');
  • ANYSOME 等价,任选其一即可;
  • 子查询必须返回单列结果
  • 若子查询结果为空,则 ALL 始终为真,ANY 始终为假;
  • 当使用 = 搭配 ANY 时,与 IN 等价:
-- 以下两者等价
salary = ANY (SELECT salary FROM emp WHERE dept = '销售部');
salary IN (SELECT salary FROM emp WHERE dept = '销售部');