В этом руководстве вы узнаете, как использовать оператор ALL SQL Server для сравнения значения со списком наборов значений из одного столбца.
Обзор оператора SQL Server ALL
Оператор ALL в SQL Server — это логический оператор, который сравнивает скалярное значение со списком значений из одного столбца, возвращаемым подзапросом.
Ниже показан синтаксис оператора ALL:
scalar_expression comparison_operator ALL( subquery)
В этом синтаксисе:
- Скалярное_выражение — это любое допустимое выражение.
- Оператор_сравнения — это любой допустимый оператор сравнения, включая равно(=), не равно(), больше(>), больше или равно(>=), меньше(<), меньше или равно(<=).
- Подзапрос в скобках — это оператор SELECT, который возвращает результат одного столбца. Кроме того, тип данных возвращаемого столбца должен совпадать с типом данных скалярного выражения.
Оператор ALL возвращает значение TRUE, если все пары(scalar_expression, v) имеют значение TRUE; v — это значение в результате в одном столбце.
Если одна из пар(scalar_expression, v) возвращает FALSE, то оператор ALL возвращает FALSE.
Примеры операторов SQL Server ALL
Рассмотрим следующую таблицу продуктов из образца базы данных.
Следующий оператор возвращает список средних цен на продукты для каждого бренда:
SELECT AVG(list_price) avg_list_price FROM production.products GROUP BY brand_id ORDER BY avg_list_price;
1) скалярное_выражение > ВСЕ(подзапрос)
Выражение возвращает значение TRUE, если scalar_expression больше максимального значения, возвращаемого подзапросом.
Например, следующий запрос находит продукты, цены на которые превышают среднюю цену на продукты всех брендов:
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) скалярное_выражение < ВСЕ(подзапрос)
Выражение принимает значение 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 с одним из следующих операторов сравнения, таких как равно(=), больше или равно(>=), меньше или равно(<=) и не равно().
В этом руководстве вы узнали, как использовать оператор ALL SQL Server для сравнения скалярного значения с одним набором столбцов значений, возвращаемым подзапросом.