Sql all: SQL — Операторы ANY и ALL
ALL (Transact-SQL) — SQL Server
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
-
Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure
Сравнивает скалярное значение с набором значений, состоящим из одного столбца.
Соглашения о синтаксисе Transact-SQL
Синтаксис
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )
Примечание
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
scalar_expression
Любое допустимое выражение expression.
{ = | <> | != | > | >= | !> | < | <= | !< }
Оператор сравнения.
subquery
Вложенный запрос, возвращающий результирующий набор, состоящий из одного столбца. Тип данных возвращаемого столбца должен совпадать с типом данных аргумента scalar_expression.
Ограниченная инструкция SELECT, в которой запрещено предложение ORDER BY, а также ключевое слово INTO.
Типы результата
Boolean
Значение результата
Возвращает TRUE, если заданное сравнение возвращает TRUE для всех пар (scalar_expression, x), где x является значением из набора строк, состоящего из одного столбца. В противном случае возвращает значение FALSE.
Если аргумент scalar_expression установлен в значение ALL, будет выполнено сравнение каждого значения, возвращаемого вложенным запросом. Например, если вложенный запрос возвращает значения 2 и 3, то при scalar_expression<= ALL будет возвращаться TRUE для значения scalar_expression, равного 2. Если вложенный запрос возвращает значения 2 и 3, то при scalar_expression = ALL (subquery) будет возвращаться FALSE, так как некоторые значения вложенного запроса (значение 3) могут не отвечать критериям этого выражения.
Инструкции, которым необходим аргумент scalar_expression для сравнения каждого значения, возвращенного вложенным запросом, перечислены в разделе SOME | ANY (Transact-SQL).
Чтобы узнать, как сравнить равенство двух выражений и гарантировать истинный или ложный результат, см. статью IS [NOT] DISTINCT FROM (Transact-SQL).
В этой статье приводятся ссылки на выражение ALL при его использовании совместно с вложенными запросами. ALL может также использоваться с инструкциями UNION и SELECT.
Примеры
В следующем примере создается хранимая процедура, которая определяет, могут ли быть изготовлены все компоненты, указанные SalesOrderID
в базе данных AdventureWorks2022, за указанное количество дней. В этом примере вложенный запрос используется для создания списка числовых значений DaysToManufacture
для всех компонентов с указанным идентификатором SalesOrderID
, после чего происходит проверка того, что время производства всех заказов (DaysToManufacture
) находится в пределах указанного числа дней.
-- Uses AdventureWorks CREATE PROCEDURE DaysToBuild @OrderID INT, @NumberOfDays INT AS IF @NumberOfDays >= ALL ( SELECT DaysToManufacture FROM Sales.SalesOrderDetail JOIN Production.Product ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID WHERE SalesOrderID = @OrderID ) PRINT 'All items for this order can be manufactured in specified number of days or less.' ELSE PRINT 'Some items for this order can''t be manufactured in specified number of days or less.' ;
Для проверки этой процедуры выполните ее, используя заказ SalesOrderID 49080
. В него входит один компонент, производство которого занимает 2
дня, и два компонента, производство которых занимает 0 дней. Первая из нижеследующих инструкций отвечает этим критериям. Второй запрос — нет.
EXECUTE DaysToBuild 49080, 2 ;
Результирующий набор:
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
Результирующий набор:
Some items for this order can't be manufactured in specified number of days or less.
См. также раздел
- CASE (Transact-SQL)
- Выражения (Transact-SQL)
- Функции, используемых в базах данных SQL
- LIKE (Transact-SQL)
- Операторы (Transact-SQL)
- SELECT (Transact-SQL)
- Предложение WHERE (Transact-SQL)
- IN (Transact-SQL)
- IS [NOT] DISTINCT FROM (Transact-SQL)
ВСЕ (Transact-SQL) — SQL Server
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
Применяется к: SQL Server База данных SQL Azure Azure SQL Управляемый экземпляр
Сравнивает скалярное значение с набором значений из одного столбца.
Соглашения о синтаксисе Transact-SQL
Синтаксис
скалярное_выражение { = | <> | != | > | >= | !> | < | <= | !<} ВСЕ (подзапрос)
Примечание
Чтобы просмотреть синтаксис Transact-SQL для SQL Server 2014 и более ранних версий, см. документацию по предыдущим версиям.
Аргументы
scalar_expression
Любое допустимое выражение.
{ = | <> | != | > | >= | !> | < | <= | !< }
Оператор сравнения.
подзапрос
Подзапрос, который возвращает набор результатов из одного столбца. Тип данных возвращаемого столбца должен быть тем же типом данных, что и тип данных scalar_expression .
Ограниченный оператор SELECT, в котором не разрешено использовать предложение ORDER BY и ключевое слово INTO.
Типы результатов
Булево значение
Значение результата
Возвращает TRUE, если указанное сравнение равно TRUE для всех пар ( scalar_expression , x ), когда x — это значение в наборе из одного столбца. В противном случае возвращается FALSE .
ALL требует scalar_expression для положительного сравнения с каждым значением, возвращаемым подзапросом. Например, если подзапрос возвращает значения 2 и 3, scalar_expression <= ALL (подзапрос) будет оцениваться как TRUE для scalar_expression , равного 2. Если подзапрос возвращает значения 2 и 3, scalar_expression = ALL ( подзапрос) будет оцениваться как FALSE, поскольку некоторые значения подзапроса (значение 3) не будут соответствовать критериям выражения.
Для инструкций, которые требуют scalar_expression для положительного сравнения только с одним значением, возвращаемым подзапросом, см. SOME | ЛЮБОЙ (Transact-SQL).
Чтобы сравнить равенство двух выражений и гарантировать истинный или ложный результат, см. раздел IS [NOT] DISTINCT FROM (Transact-SQL).
Эта статья относится к ALL, когда используется с подзапросом. ALL также можно использовать с UNION и SELECT.
Примеры
В следующем примере создается хранимая процедура, которая определяет, все ли компоненты указанного SalesOrderID
в базе данных AdventureWorks2022 может быть изготовлен в течение указанного количества дней. В примере используется подзапрос для создания списка значений DaysToManufacture
для всех компонентов определенного SalesOrderID
, а затем подтверждается, что все DaysToManufacture
находятся в пределах указанного количества дней.
-- Использует AdventureWorks СОЗДАТЬ ПРОЦЕДУРУ DaysToBuild @OrderID INT, @NumberOfDays INT КАК ЕСЛИ @NumberOfDays >= ВСЕ ( ВЫБЕРИТЕ DaysToManufacture ОТ Sales.SalesOrderDetail ПРИСОЕДИНЯЙСЯ к производству.Продукт ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID ГДЕ SalesOrderID = @OrderID ) PRINT 'Все товары для этого заказа могут быть изготовлены в течение указанного количества дней или меньше.' ЕЩЕ PRINT 'Некоторые товары для этого заказа не могут быть изготовлены в течение указанного количества дней или меньше.' ;
Чтобы протестировать процедуру, выполните процедуру, используя SalesOrderID 49080
, один компонент которого требует 2
дней, а два компонента требуют 0 дней. Первое утверждение ниже соответствует критериям. Второй запрос не делает.
ВЫПОЛНИТЬ DaysToBuild 49080, 2 ;
Вот набор результатов.
Все изделия для этого заказа могут быть изготовлены в течение указанного количества дней или меньше.
ВЫПОЛНИТЬ DaysToBuild 49080, 1 ;
Вот набор результатов.
Некоторые товары для этого заказа не могут быть изготовлены в течение указанного количества дней или меньше.
См. также
- CASE (Transact-SQL)
- Выражения (Transact-SQL)
- Что такое функции базы данных SQL?
- НРАВИТСЯ (Transact-SQL)
- Операторы (Transact-SQL)
- ВЫБОР (Transact-SQL)
- ГДЕ (Transact-SQL)
- В (Transact-SQL)
- [НЕ] ОТЛИЧАЕТСЯ ОТ (Transact-SQL)
Оператор SQL Server ALL
Резюме : в этом руководстве вы узнаете, как использовать оператор SQL Server ALL
для сравнения значения со списком из набора значений из одного столбца.
Обзор оператора SQL Server
ALL
Оператор SQL Server ALL
— это логический оператор, сравнивающий скалярное значение со списком из одного столбца значений, возвращаемых подзапросом.
Ниже показан синтаксис оператора ALL
:
скалярное_выражение оператор сравнения ALL ( подзапрос ) Язык кода: SQL (язык структурированных запросов) (sql)
В этом синтаксисе:
-
scalar_expression
— любое допустимое выражение. - Оператор сравнения
- Подзапрос
SELECT
, который возвращает результат одного столбца. Кроме того, тип данных возвращаемого столбца должен совпадать с типом данных скалярного выражения.
Оператор ALL
возвращает TRUE
, если все пары ( scalar_expression
, v
) оцениваются как TRUE
; v — это значение в результате с одним столбцом.
Если одна из пар ( scalar_expression
, v
) возвращает FALSE
, тогда оператор ALL
возвращает FALSE
.
SQL Server
ВСЕ
примеры операторов
Рассмотрим следующую таблицу products
из примера базы данных.
Следующий оператор возвращает список средних прейскурантных цен на продукты для каждой марки:
SELECT AVG (списочная_цена) avg_list_price ОТ производство.продукция ГРУППА ПО brand_id СОРТИРОВАТЬ ПО средняя_цена_списка; Язык кода: SQL (язык структурированных запросов) (sql)
1) scalar_expression > ALL (подзапрос)
Выражение возвращает TRUE
, если scalar_expression
больше, чем наибольшее значение, возвращаемое подзапросом .
Например, следующий запрос находит продукты, прейскурантные цены которых превышают среднюю прейскурантную цену продуктов всех марок:
ВЫБЕРИТЕ наименование товара, список цен ОТ производство.продукция ГДЕ list_price > ВСЕ ( ВЫБИРАТЬ AVG (списочная_цена) avg_list_price ОТ производство.продукция ГРУППА ПО brand_id ) СОРТИРОВАТЬ ПО список цен; Язык кода: SQL (язык структурированных запросов) (sql)
2) scalar_expression
< ALL (подзапрос)
Выражение оценивается как TRUE
, если скалярное выражение меньше наименьшего значения, возвращаемого подзапросом.