Condividi tramite


ALL (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Confronta un valore scalare con un set di valori a colonna singola.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

scalar_expression
Qualsiasi espressione valida.

{ = | <> | != | > | >= | !> | < | <= | !< }
Operatore di confronto.

subquery
Sottoquery che restituisce un set di risultati a colonna singola. Il tipo di dati della colonna restituita deve essere uguale a quello di scalar_expression.

È un'istruzione SELECT con restrizioni, in cui la clausola ORDER BY e la parola chiave INTO non sono consentite.

Tipi restituiti

Booleano

Valore restituito

Restituisce TRUE se il confronto specificato è TRUE per tutte le coppie (scalar_expression, x), dove x è un valore del set a colonna singola. In caso contrario, restituisce FALSE.

Osservazioni:

ALL specifica che l'argomento scalar_expression deve essere confrontato in modo univoco con ogni valore restituito dalla sottoquery. Se ad esempio la sottoquery restituisce i valori 2 e 3, scalar_expression<= ALL (sottoquery) restituisce TRUE se il valore di scalar_expression è 2. Se la sottoquery restituisce i valori 2 e 3, scalar_expression = ALL (subquery) restituisce FALSE, perché alcuni valori della sottoquery (il valore 3) non soddisfano i criteri dell'espressione.

Per le istruzioni che specificano che l'argomento scalar_expression deve essere confrontato in modo univoco con un solo valore restituito dalla sottoquery, vedere SOME | ANY (Transact-SQL).

Per confrontare l'uguaglianza di due espressioni e garantire un risultato true o false, vedere IS [NOT] DISTINCT FROM (Transact-SQL).

Questo articolo illustra l'uso di ALL con una sottoquery. L'opzione ALL può essere usata anche con UNION e SELECT.

Esempi

Nell'esempio seguente viene creata una stored procedure che determina se tutti i componenti di un oggetto specificato SalesOrderID nel database AdventureWorks2022 possono essere prodotti nel numero specificato di giorni. L'esempio usa una sottoquery per creare un elenco contenente il numero dei valori di DaysToManufacture per tutti i componenti dello specifico SalesOrderID e quindi verifica che tutti i valori di DaysToManufacture rientrino nel numero di giorni specificato.

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

Per testare la procedura, eseguirla utilizzando il valore SalesOrderID 49080, a cui sono associati un componente che richiede 2 giorni e due componenti che richiedono 0 giorni. La prima istruzione, di seguito, soddisfa i criteri, la seconda query no.

EXECUTE DaysToBuild 49080, 2 ;  

Il set di risultati è il seguente.

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

EXECUTE DaysToBuild 49080, 1 ;  

Il set di risultati è il seguente.

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

Vedi anche