SQL ANY

摘要:在本教程中,您将了解 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 - Employees Table

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)
SQL ANY - average salary of each department

要查找工资等于其部门平均工资的所有员工,可以使用以下查询

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 with the equal to operator

使用 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 with the not equal to operator

使用 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)
SQL ANY with the greater than operator

请注意,最低平均工资为 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 with the greater than or equal to operator

使用 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 with the less than operator

在此示例中,工资低于每个部门最高平均工资的员工

使用 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 with the less than or equal to operator

如屏幕截图所示,结果集包括工资低于或等于每个部门最高平均工资的员工。

现在您应该了解如何使用 SQL ANY 运算符通过将某个值与值集进行比较来形成条件。

本教程是否有帮助?