ALL (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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.