SQL ANY 運算子

摘要:在本教程中,您將學習如何使用 SQL ANY 運算子將一個值與子查詢返回的一組值進行比較。

SQL ANY 運算子簡介 #

ANY 運算子與 比較運算子(如 >、>=、<、<=、=、<>)一起使用,用於將一個值與子查詢返回的值列表進行比較。

以下是 ANY 運算子的語法

value comparison_operator ANY (subquery)Code language: SQL (Structured Query Language) (sql)

在此語法中:

  • 首先,在 ANY 運算子前加上一個比較運算子,如 =><>=<=<>
  • 其次,定義一個返回用於比較的值列表的子查詢。

如果比較對於集合中的至少一個值true,則 ANY 運算子返回 true。如果子查詢不返回任何行,則返回 false。

通常,您在 SELECTDELETEUPDATE 語句的 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 表。

SQL ANY - Employees Table

以下查詢返回部門 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,00013,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,00013,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 運算子和比較運算子將一個值與子查詢返回的一組值進行比較。

測驗 #

資料庫 #

本教程是否有幫助?
© .