摘要:在本教程中,您将了解 SQL ANY 运算符以及如何用它将值与一组值进行比较。
SQL ANY 运算符简介
ANY
运算符是 逻辑运算符,它将一个值与子查询返回的一组值进行比较。ANY
运算符之前必须接 比较运算符 >, >=, <, <=, =, <>,后面接 子查询。
下面说明了 ANY
运算符的语法
WHERE column_name comparison_operator ANY (subquery)
Code language: SQL (Structured Query Language) (sql)
如果子查询没有返回行,该条件将评估为假。假设子查询不是返回空行,则下面说明了 ANY
运算符与每个比较运算符一起使用时的含义
条件 | 含义 |
---|---|
x = ANY (…) | 列 c 中的值必须与集合中的一个或多个值匹配才能评估为 true。 |
x != ANY (…) | 列 c 中的值不能与集合中的一个或多个值匹配才能评估为 true。 |
x > ANY (…) | 列 c 中的值必须大于集合中的最小值才能评估为 true。 |
x < ANY (…) | 列 c 中的值必须小于集合中的最大值才能评估为 true。 |
x >= ANY (…) | 列 c 中的值必须大于或等于集合中的最小值才能评估为 true。 |
x <= ANY (…) | 列 c 中的值必须小于或等于集合中的最大值才能评估为 true。 |
SQL ANY 示例
对于演示,我们将使用 示例数据库 中的 employees
表

SQL ANY 与等于运算符示例
以下语句使用 AVG()
函数和 GROUP BY
子句查找每个部门的平均工资
SELECT
ROUND(AVG(salary), 2)
FROM
employees
GROUP BY
department_id
ORDER BY
AVG(salary) DESC;
Code language: SQL (Structured Query Language) (sql)

要查找工资等于其部门平均工资的所有员工,可以使用以下查询
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary = ANY (
SELECT
AVG(salary)
FROM
employees
GROUP BY
department_id)
ORDER BY
first_name,
last_name,
salary;
Code language: SQL (Structured Query Language) (sql)

使用 SQL ANY 与不等于运算符示例
类似地,以下查询查找工资不等于每个部门平均工资的所有员工
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary <> ANY (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY
first_name,
last_name,
salary;
Code language: SQL (Structured Query Language) (sql)

使用 SQL ANY 与大于运算符示例
以下查询查找工资高于每个部门平均工资的所有员工
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary > ANY (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)

请注意,最低平均工资为 4,150
。以上查询返回工资高于最低工资的所有员工。
使用 SQL ANY 与大于或等于运算符示例
以下语句返回工资大于或等于每个部门平均工资的所有员工
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary >= ANY (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY first_name , last_name , salary;
Code language: SQL (Structured Query Language) (sql)

使用 SQL ANY 与小于运算符示例
以下查询查找工资低于每个部门平均工资的所有员工
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary < ANY (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY salary DESC;
Code language: SQL (Structured Query Language) (sql)

在此示例中,工资低于每个部门最高平均工资的员工
使用 SQL ANY 与小于或等于运算符示例
要查找工资低于或等于每个部门平均工资的员工,可以使用以下查询
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary <= ANY (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY salary DESC;
Code language: SQL (Structured Query Language) (sql)

如屏幕截图所示,结果集包括工资低于或等于每个部门最高平均工资的员工。
现在您应该了解如何使用 SQL ANY
运算符通过将某个值与值集进行比较来形成条件。
本教程是否有帮助?