Partilhar via


ALL (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric

Compara um valor escalar com um conjunto de valores de uma única coluna.

Convenções de sintaxe de Transact-SQL

Sintaxe

scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )  

Argumentos

scalar_expression
É qualquer expressão válida.

{ = | <> | != | > | >= | !> | < | <= | !< }
É um operador de comparação.

subquery
É uma subconsulta que retorna um conjunto de resultados com uma coluna. O tipo de dados da coluna retornada precisa ser o mesmo tipo de dados que o da scalar_expression.

É uma instrução SELECT restrita, em que a cláusula ORDER BY e a palavra-chave INTO não são permitidas.

Tipos de resultado

Booliano

Valor do resultado

Retornará TRUE quando a comparação especificada for TRUE para todos os pares (scalar_expressionx) e quando x for um valor no conjunto de uma única coluna. Caso contrário, retorna False.

Comentários

ALL requer que a scalar_expression seja comparada positivamente com todos os valores retornados pela subconsulta. Por exemplo, se a subconsulta retornar os valores 2 e 3, scalar_expression<= ALL (a subconsulta) será avaliada como TRUE para uma scalar_expression igual a 2. Se a consulta aninhada retornar os valores 2 e 3, scalar_expression = ALL (consulta aninhada) será avaliada como FALSE, porque alguns dos valores da consulta aninhada (o valor 3) não atenderão aos critérios da expressão.

Para instruções que requerem que a scalar_expression seja comparada positivamente somente a um valor retornado pela subconsulta, confira SOME | ANY (Transact-SQL).

Para comparar a igualdade de duas expressões e garantir um resultado verdadeiro ou falso, confira IS [NOT] DISTINCT FROM (Transact-SQL).

Este artigo se refere a ALL quando usado com uma consulta aninhada. ALL também pode ser usado com UNION e SELECT.

Exemplos

O exemplo a seguir cria um procedimento armazenado que determina se todos os componentes de um SalesOrderID especificado no banco de dados AdventureWorks2022 podem ser fabricados no número de dias especificado. O exemplo usa uma consulta aninhada para criar uma lista do número de valores de DaysToManufacture para todos os componentes do SalesOrderID específico e, em seguida, confirma se todos os DaysToManufacture estão dentro do número de dias especificado.

-- 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.' ;  

Para testar o procedimento, execute-o usando o SalesOrderID 49080, que tem um componente que requer 2 dias e dois componentes que requerem 0 dia. A primeira instrução a seguir corresponde aos critérios. A segunda consulta não.

EXECUTE DaysToBuild 49080, 2 ;  

Veja a seguir o conjunto de resultados.

All items for this order can be manufactured in specified number of days or less.

EXECUTE DaysToBuild 49080, 1 ;  

Veja a seguir o conjunto de resultados.

Some items for this order can't be manufactured in specified number of days or less.

Confira também