SQL Server All運算符

在本教學中,將學習如何使用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集合操作符