摘要:在本教程中,您將學習如何使用 SQL ANY 運算子將一個值與子查詢返回的一組值進行比較。
SQL ANY 運算子簡介 #
ANY 運算子與 比較運算子(如 >、>=、<、<=、=、<>)一起使用,用於將一個值與子查詢返回的值列表進行比較。
以下是 ANY 運算子的語法
value comparison_operator ANY (subquery)Code language: SQL (Structured Query Language) (sql)在此語法中:
- 首先,在
ANY運算子前加上一個比較運算子,如=、>、<、>=、<=或<>。 - 其次,定義一個返回用於比較的值列表的子查詢。
如果比較對於集合中的至少一個值為 true,則 ANY 運算子返回 true。如果子查詢不返回任何行,則返回 false。
通常,您在 SELECT、DELETE 和 UPDATE 語句的 WHERE 子句中使用 ANY 運算子。
WHERE
column_name comparison_operator ANY(subquery)Code language: SQL (Structured Query Language) (sql)如果子查詢至少返回一行,下表顯示了 ANY 運算子與比較運算子一起使用時的含義
| 條件 | 含義 |
|---|---|
| value = ANY(subquery) | 如果 value 等於子查詢返回的任何一個值,則條件為 true,否則為 false。 |
| value <> ANY(subquery) | 如果 value 不等於子查詢返回的任何一個值,則條件為 true;如果它等於所有值,則為 false。 |
| value > ANY(subquery) | 如果 value 大於子查詢返回的最小值,則條件返回 true;如果它小於或等於所有值,則為 false。 |
| value < ANY(subquery) | 如果 value 小於子查詢返回的最大值,則條件為 true;如果它大於或等於所有值,則為 false。 |
| value >= ANY(subquery) | 如果 value 大於或等於子查詢返回的最小值,則條件為 true;如果它小於所有值,則為 false。 |
| value <= ANY(subquery) | 如果 value 小於或等於子查詢返回的最大值,則條件為 true;如果它大於所有值,則為 false。 |
SQL ANY 運算子示例 #
我們將使用示例資料庫中的 employees 表。

以下查詢返回部門 ID 為 2 的員工的薪水。
SELECT
salary
FROM
employees
WHERE
department_id = 2
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql)輸出
salary
----------
6000.00
13000.00Code language: plaintext (plaintext)將 SQL ANY 與 = (等於) 一起使用 #
以下查詢使用 ANY 運算子和 = 運算子來查詢薪水等於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary = ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql)輸出
first_name | salary
------------+----------
Bruce | 6000.00
Pat | 6000.00
Michael | 13000.00Code language: SQL (Structured Query Language) (sql)結果包括薪水為 6,000 或 13,000 的員工。
將 SQL ANY 運算子與 <> (不等於) 一起使用 #
以下查詢使用 ANY 運算子和 <> 運算子來查詢薪水不等於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary <> ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql) first_name | salary
-------------+----------
Charles | 6200.00
Susan | 6500.00
Shanta | 6500.00
Luis | 6900.00
Kimberely | 7000.00
Ismael | 7700.00
Jose Manuel | 7800.00
...Code language: SQL (Structured Query Language) (sql)結果集不包括薪水為 6,000 和 13,000 的員工。
將 SQL ANY 運算子與 > (大於) 一起使用 #
以下查詢使用 ANY 運算子和 > 運算子來查詢薪水大於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary > ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql)輸出
first_name | salary
-------------+----------
Charles | 6200.00
Susan | 6500.00
Shanta | 6500.00
Luis | 6900.00
Kimberely | 7000.00
...Code language: SQL (Structured Query Language) (sql)該查詢返回薪水大於部門 2 中最低薪水(即 6,000)的員工。
將 SQL ANY 運算子與 >= (大於或等於) 一起使用 #
以下查詢使用 ANY 運算子和 >= 運算子來查詢薪水大於或等於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary >= ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql) first_name | salary
-------------+----------
Pat | 6000.00
Bruce | 6000.00
Charles | 6200.00
Shanta | 6500.00
Susan | 6500.00
Luis | 6900.00
...Code language: SQL (Structured Query Language) (sql)該查詢返回薪水大於或等於 (>=) 部門 2 中最低薪水(即 6,000)的員工。
將 SQL ANY 運算子與 < (小於) 一起使用 #
以下查詢使用 ANY 運算子和 < 運算子來查詢薪水小於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary < ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary DESC;Code language: SQL (Structured Query Language) (sql)first_name | salary
-------------+----------
Shelley | 12000.00
Nancy | 12000.00
Den | 11000.00
Hermann | 10000.00
Daniel | 9000.00
...Code language: SQL (Structured Query Language) (sql)結果集包括薪水低於部門 2 中員工最高薪水 (13,000) 的員工。
將 SQL ANY 運算子與 <= (小於或等於) 一起使用 #
以下查詢使用 ANY 運算子和 <= 運算子來查詢薪水小於或等於部門 ID 2 中任何員工薪水的員工。
SELECT
first_name,
salary
FROM
employees
WHERE
salary <= ANY (
SELECT
salary
FROM
employees
WHERE
department_id = 2
)
ORDER BY
salary DESC;Code language: SQL (Structured Query Language) (sql) first_name | salary
-------------+----------
Michael | 13000.00
Nancy | 12000.00
Shelley | 12000.00
Den | 11000.00
Hermann | 10000.00
....Code language: SQL (Structured Query Language) (sql)結果集包括薪水小於或等於部門 2 中員工最高薪水 (13,000) 的員工。
摘要
- 使用
ANY運算子和比較運算子將一個值與子查詢返回的一組值進行比較。