TOP

SQL-Operatoren ANY und ALL

SQL ANY und ALL Beschreibung

Mit den SQL-Anweisungen ANY und ALL können Sie Vergleiche zwischen dem Wert einer Spalte und einem Bereich anderer Werte durchführen.


SQL ANY Beschreibung

ANY-Operator:

  • gibt als Ergebnis einen booleschen Wert zurück
  • gibt TRUE zurück, wenn ANY der Unterabfragewerte mit der Bedingung übereinstimmt
  • ANY bedeutet, dass die Bedingung wahr ist, wenn die Operation für einen der Werte im Bereich wahr ist.

    ANY Syntax

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Der Operator muss ein Standardvergleichsoperator sein (=, <>, !=, >, >=, < oder <=).

    SQL ALL Beschreibung

    Operator ALL:

  • gibt als Ergebnis einen booleschen Wert zurück
  • gibt TRUE zurück, wenn ALL-Unterabfragewerte mit der Bedingung übereinstimmen
  • Wird mit den Operatoren SELECT, WHERE und HAVING verwendet
  • ALL bedeutet, dass die Bedingung nur dann wahr ist, wenn die Operation für alle Werte im Bereich wahr ist.

    ALL Syntax zusammen mit SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Syntax zusammen mit WHERE oder HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Der Operator muss ein Standardvergleichsoperator sein (=, <>, !=, >, >=, < oder <=).

    Demonstrationsdatenbank

    Das Folgende ist ein Beispiel aus der Tabelle „Products“ („Produkte“) der Datenbank „Northwind“:

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    Und das Beispiel aus der Tabelle „OrderDetails“ („Bestelldetails“):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Beispiele

    Die folgende SQL-Abfrage listet ProductName auf, wenn sie einen (ANY) Datensatz in der Tabelle OrderDetails mit einem Quantity-Wert gleich 10 findet (dies gibt TRUE zurück, da die Spalte Quantity einige Werte von 10 hat):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    Die folgende SQL-Abfrage listet ProductName auf, wenn sie einen (ANY) Datensatz in der Tabelle OrderDetails mit einer Menge größer als 99 findet (dies gibt TRUE zurück, da die Spalte Quantity einige Werte größer als 99 enthält):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    Eine andere SQL-Anweisung listet ProductName auf, wenn sie einen (ANY) Datensatz in der Tabelle OrderDetails mit einer Menge größer als 1000 findet (dies gibt FALSE zurück, da die Spalte Quantity keine Werte größer als 1000 enthält):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    SQL ALL Beispiele

    Die folgende SQL-Anweisung listet alle (ALL) Produktnamen auf:

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    Die folgende SQL-Anweisung listet ProductName auf, wenn alle (ALL) Datensätze in der Tabelle OrderDetails eine Anzahl von 10 haben. Dies wird natürlich FALSE zurückgeben, da die Spalte Quantity viele verschiedene Werte hat (nicht nur den Wert 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)