ALL (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • scalar_expression
    Ist ein gültiger Ausdruck.

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

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

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

Ergebnistypen

Boolean

Ergebniswert

Gibt TRUE zurück, wenn der angegebene Vergleich TRUE ist für alle Paare (scalar_expression**,**x), wobei x ein Wert im einspaltigen Resultset ist. Andernfalls wird FALSE zurückgegeben.

Hinweise

ALL erfordert, dass scalar_expression mit jedem von der Unterabfrage zurückgegebenen Wert positiv verglichen wird. Wenn die Unterabfrage beispielsweise die Werte 2 und 3 zurückgibt, wird scalar_expression <= ALL (Unterabfrage) zu TRUE für scalar_expression von 2 ausgewertet. Wenn die Unterabfrage die Werte 2 und 3 zurückgibt, wird scalar_expression = ALL (Unterabfrage) zu FALSE ausgewertet, 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).

Dieses Thema 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 AdventureWorks-Datenbank innerhalb der angegebenen Anzahl von Tagen gefertigt werden können. Im Beispiel wird eine Unterabfrage verwendet, um eine Liste mit der Anzahl des DaysToManufacture-Wertes für alle Komponenten der bestimmten SalesOrderID zu erstellen. Anschließend wird bestätigt, dass alle DaysToManufacture innerhalb der Anzahl der angegebenen Tage liegen.

USE AdventureWorks ;
GO

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 cannot 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 erfüllt sie nicht.

EXECUTE DaysToBuild 49080, 2 ;

Dies ist das Resultset.

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

EXECUTE DaysToBuild 49080, 1 ;

Dies ist das Resultset.

Some items for this order cannot be manufactured in specified number of days or less.