在本教程中,将学习如何使用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
运算符,例如等于(=
),大于或等于(>=
),小于或等于(<=
)和不等于(<>
)。