ALL (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Vergleicht einen Skalarwert mit Werten, die sich in einer einzelnen Spalte befinden.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

scalar_expression
Ein beliebiger gültiger Ausdruck.

{ = | <> | != | > | >= | !> | < | <= | !< }
Ein Vergleichsoperator

subquery
Eine Unterabfrage, die ein Resultset einer Spalte zurückgibt. Der Datentyp der zurückgegebenen Spalte muss dem Datentyp von scalar_expression entsprechen.

Ist eine beschränkte SELECT-Anweisung, in der die ORDER BY-Klausel und das INTO-Schlüsselwort nicht zulässig sind.

Ergebnistypen

Boolescher Wert

Ergebniswert

Gibt TRUE zurück, wenn der angegebene Vergleich für alle Paare (scalar_expression,x) TRUE ergibt, wobei x ein Wert in der Menge der Einzelspalten ist. Andernfalls wird FALSE zurückgegeben:

Bemerkungen

ALL erfordert, dass der Vergleich von scalar_expression mit jedem der von der Unterabfrage zurückgegebenen Wert positiv ausfällt. Wenn die Unterabfrage beispielsweise die Werte 2 und 3 zurückgibt, ergibt scalar_expression<= ALL (Unterabfrage) für scalar_expression = 2 TRUE. Wenn die Unterabfrage beispielsweise die Werte 2 und 3 zurückgibt, ergibt scalar_expression = ALL (Unterabfrage) FALSE, da einige Werte der Unterabfrage (der Wert 3) die Kriterien des Ausdrucks nicht erfüllen.

Anweisungen, die erfordern, dass scalar_expression mit nur einem von der Unterabfrage zurückgegebenen Wert positiv verglichen wird, finden Sie unter SOME | ANY (Transact-SQL).

Informationen zum Vergleich der Gleichheit zweier Ausdrücke und zur Gewährleistung des Ergebnisses TRUE oder FALSE finden Sie unter IS [NOT] DISTINCT FROM (Transact-SQL).

Dieser Artikel bezieht sich auf ALL bei Verwendung mit einer Unterabfrage. ALL kann auch mit UNION und SELECT verwendet werden.

Beispiele

Im folgenden Beispiel wird eine gespeicherte Prozedur erstellt, die bestimmt, ob alle Komponenten einer angegebenen SalesOrderID in der AdventureWorks2022-Datenbank innerhalb der angegebenen Anzahl von Tagen gefertigt werden können. Im Beispiel wird eine Unterabfrage verwendet, um eine Liste mit der Anzahl der DaysToManufacture-Werte für alle Komponenten der bestimmten SalesOrderID zu erstellen. Anschließend wird bestätigt, dass alle DaysToManufacture innerhalb der Anzahl der angegebenen Tage liegen.

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

Zum Testen der Prozedur führen Sie die Prozedur aus, indem Sie die SalesOrderID 49080 verwenden, die über eine Komponente verfügt, die 2 Tage erfordert und über zwei Komponenten verfügt, die 0 Tage erfordern. Die erste im Folgenden genannte Anweisung erfüllt die Kriterien. Die zweite Abfrage nicht.

EXECUTE DaysToBuild 49080, 2 ;  

Hier ist das Resultset.

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

EXECUTE DaysToBuild 49080, 1 ;  

Hier ist das Resultset.

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

Siehe auch