在本教程中,将学习如何使用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集合操作符
