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
, если скалярное выражение меньше наименьшего значения, возвращаемого подзапросом.