Zurück zu: SQL Tutorial
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
undHAVING
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:
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 – 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 – 550 ml bottles | 10 |
4 | Chef Anton’s Cajun Seasoning | 2 | 2 | 48 – 6 oz jars | 22 |
5 | Chef Anton’s Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
6 | Grandma’s Boysenberry Spread | 3 | 2 | 12 – 8 oz jars | 25 |
7 | Uncle Bob’s Organic Dried Pears | 3 | 7 | 12 – 1 lb pkgs. | 30 |
8 | Northwoods Cranberry Sauce | 3 | 2 | 12 – 12 oz jars | 40 |
9 | Mishi Kobe Niku | 4 | 6 | 18 – 500 g pkgs. | 97 |
Und eine Auswahl aus der Tabelle „OrderDetails“:
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
6 | 10250 | 41 | 10 |
7 | 10250 | 51 | 35 |
8 | 10250 | 65 | 15 |
9 | 10251 | 22 | 6 |
10 | 10251 | 57 | 15 |
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);