Dela via


ALL (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Jämför ett skalärt värde med en uppsättning värden med en kolumn.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

scalar_expression
Är ett giltigt uttryck.

{ = | <> | != | > | >= | !> | < | <= | !< }
Är en jämförelseoperator.

subquery
Är en underfråga som returnerar en resultatuppsättning med en kolumn. Datatypen för den returnerade kolumnen måste vara samma datatyp som datatypen för scalar_expression.

Är en begränsad SELECT-instruktion där ORDER BY-satsen och NYCKELORDET INTO inte tillåts.

Result types

Boolean

Result value

Returnerar TRUE när den angivna jämförelsen är TRUE för alla par (scalar_expression, x), när x är ett värde i uppsättningen med en kolumn. Annars returneras FALSE.

Remarks

ALLA kräver att scalar_expression jämför positivt med varje värde som returneras av underfrågan. Om underfrågan till exempel returnerar värdena 2 och 3 utvärderas scalar_expression<= ALL (underfråga) som TRUE för en scalar_expression på 2. Om underfrågan returnerar värden på 2 och 3 skulle scalar_expression = ALL (underfråga) utvärderas som FALSE, eftersom vissa av värdena för underfrågan (värdet 3) inte uppfyller uttryckets villkor.

Instruktioner som kräver att scalar_expression jämför positivt med endast ett värde som returneras av underfrågan finns i SOME | ANY (Transact-SQL).

Om du vill jämföra likheten mellan två uttryck och garantera ett sant eller falskt resultat läser du IS [NOT] DISTINCT FROM (Transact-SQL).

Den här artikeln refererar till ALLA när den används med en underfråga. ALLA kan också användas med UNION och SELECT.

Examples

I följande exempel skapas en lagrad procedur som avgör om alla komponenter i en angiven SalesOrderID databas i AdventureWorks2022 kan tillverkas under det angivna antalet dagar. I exemplet används en underfråga för att skapa en lista över antalet DaysToManufacture värden för alla komponenter i den specifika SalesOrderIDoch bekräftar sedan att alla DaysToManufacture är inom det angivna antalet dagar.

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

Om du vill testa proceduren kör du proceduren SalesOrderID 49080med hjälp av , som har en komponent som kräver 2 dagar och två komponenter som kräver 0 dagar. Den första instruktionen nedan uppfyller kriterierna. Den andra frågan gör det inte.

EXECUTE DaysToBuild 49080, 2 ;  

Här är resultatet.

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

EXECUTE DaysToBuild 49080, 1 ;  

Här är resultatet.

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

See also