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集合操作符