在本教學中,將學習如何使用SQL Server ALL運算符將值與單列值集的列表進行比較。
ALL運算符概述
SQL Server ALL運算符是一個邏輯運算符,它將標量值與子查詢返回的單列值列表進行比較。
以下是ALL運算符語法:
scalar_expression comparison_operator ALL ( subquery)
在上面語法中,
scalar_expression是任何有效的運算式。comparison_operator是任何有效的比較運算符,包括等於(=),不等於(<>),大於(>),大於或等於(>=),小於(<),小於或等於(<=)。- 括弧內的子查詢(
subquery)是一個SELECT語句,它返回單個列的結果。 此外,返回列的數據類型必須與標量運算式的數據類型相同。
如果所有比較對(scalar_expression,v)的計算結果為TRUE,則ALL運算符返回TRUE; v是單列結果中的值。
如果其中一對(scalar_expression,v)返回FALSE,則ALL運算符返回FALSE。
SQL Server ALL運算符示例
請考慮示例資料庫中的以下products表。

以下查詢語句返回每個品牌的產品平均價格:
SELECT
AVG (list_price) avg_list_price
FROM
production.products
GROUP BY
brand_id
ORDER BY
avg_list_price;
執行上面查詢語句,得到以下結果:

1. scalar_expression > ALL ( subquery )
如果scalar_expression大於子查詢返回的最大值,則運算式返回TRUE。
例如,以下查詢查找價格大於所有品牌產品的平均價格的產品:
SELECT
product_name,
list_price
FROM
production.products
WHERE
list_price > ALL (
SELECT
AVG (list_price) avg_list_price
FROM
production.products
GROUP BY
brand_id
)
ORDER BY
list_price;
執行上面查詢語句,得到以下結果:

2. scalar_expression < ALL ( subquery )
如果標量運算式(scalar_expression)小於子查詢(subquery)返回的最小值,則運算式求值為TRUE。
以下示例按品牌查找價格低於平均價格中最低價格的產品:
SELECT
product_name,
list_price
FROM
production.products
WHERE
list_price < ALL (
SELECT
AVG (list_price) avg_list_price
FROM
production.products
GROUP BY
brand_id
)
ORDER BY
list_price DESC;
執行上面查詢語句,得到以下結果:

類似地,也可以使用以下比較運算符之一來使用ALL運算符,例如等於(=),大於或等於(>=),小於或等於(<=)和不等於(<>)。
上一篇:
SQL Server子查詢語句
下一篇:
SQL Server集合操作符
