摘要: 在本教學中,您將了解 SQL ANY 運算子以及如何使用它來比較一個值與一組值。
SQL ANY 運算子介紹
ANY
運算子是一個邏輯運算子,用於比較一個值與子查詢返回的一組值。ANY
運算子前面必須有一個比較運算子 >, >=, <, <=, =, <>,後面接著一個子查詢。
以下說明 ANY
運算子的語法
WHERE column_name comparison_operator ANY (subquery)
Code language: SQL (Structured Query Language) (sql)
如果子查詢沒有返回任何列,則條件評估為 false。假設子查詢沒有返回零列,以下說明 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
運算子,透過比較一個值與一組值來形成條件。
這個教學對您有幫助嗎?