Any, All

0

Die SQL Operatoren ANY und ALL

Mit den Operatoren ANY und ALL können Sie einen Vergleich zwischen einem einzelnen Spaltenwert und einem Bereich anderer Werte durchführen.

Der SQL ANY Operator

Der ANY Operator:

  • gibt als Ergebnis einen booleschen Wert zurück
  • gibt TRUE zurück, wenn IRGENDEINER der Unterabfragewerte die Bedingung erfüllt

ANY bedeutet, dass die Bedingung erfüllt ist, wenn die Operation für einen beliebigen Wert im Bereich zutrifft.

ANY Syntax

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
  FROM table_name
  WHERE condition);

Hinweis: Der Operator muss ein Standardvergleichsoperator sein (=, <>, !=, >, >=, < oder <=).

Der SQL ALL Operator

Der ALL Operator:

  • gibt als Ergebnis einen booleschen Wert zurück
  • gibt TRUE zurück, wenn ALLE Unterabfragewerte die Bedingung erfüllen
  • wird mit SELECT, WHERE und HAVING Anweisungen verwendet

ALL bedeutet, dass die Bedingung nur dann erfüllt ist, wenn die Operation für alle Werte im Bereich zutrifft.

ALL Syntax mit SELECT

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

ALL Syntax mit WHERE oder HAVING

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
  FROM table_name
  WHERE condition);

Hinweis: Der Operator muss ein Standardvergleichsoperator sein (=, <>, !=, >, >=, < oder <=).

Demo Datenbank

Nachfolgend sehen Sie eine Auswahl aus der Tabelle „Products“ in der Beispieldatenbank Northwind:

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

Und eine Auswahl aus der Tabelle „OrderDetails“:

OrderDetailIDOrderIDProductIDQuantity
1102481112
2102484210
310248725
410249149
5102495140
6102504110
7102505135
8102506515
910251226
10102515715

SQL ANY Beispiele

Die folgende SQL Anweisung listet den Produktnamen auf, wenn sie in IRGENDEINEM Datensatz in der Tabelle „OrderDetails“ eine Menge gleich 10 findet (dies gibt „TRUE“ zurück, weil die Spalte „Menge“ einige Werte von 10 hat):

Beispiel

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

Die folgende SQL Anweisung listet den Produktnamen auf, wenn sie in der Tabelle „OrderDetails“ einen Datensatz findet, der eine Menge größer als 99 aufweist (dies gibt „TRUE“ zurück, da die Spalte „Menge“ einige Werte größer als 99 aufweist):

Beispiel

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

Die folgende SQL Anweisung listet den Produktnamen auf, wenn sie IRGENDEINEN Datensatz in der Tabelle „OrderDetails“ findet, der eine Menge größer als 1000 aufweist (dies gibt FALSE zurück, weil die Spalte „Menge“ keine Werte größer als 1000 aufweist):

Beispiel

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

SQL ALL Beispiele

Die folgende SQL Anweisung listet ALLE Produktnamen auf:

Beispiel

SELECT ALL ProductName
FROM Products
WHERE TRUE;

Die folgende SQL Anweisung listet den Produktnamen auf, wenn in ALLEN Datensätzen in der Tabelle „OrderDetails“ die Menge gleich 10 ist. Dies gibt natürlich FALSE zurück, da die Spalte „Menge“ viele verschiedene Werte hat (nicht nur den Wert 10):

Beispiel

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);
Nach oben scrollen