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

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья

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