ALL
Unterabfragen & Fortgeschrittenes
Bedeutung
Der Operator ALL vergleicht einen Wert mit allen Werten einer Subquery-Menge und liefert nur dann TRUE, wenn der Vergleich für jeden einzelnen Wert zutrifft. Er ist das Gegenstück zu ANY.
Syntax
SELECT spalten FROM tabelle WHERE wert > ALL (SELECT spalte FROM andere_tabelle);
Lies > ALL (…) als „größer als jeder Wert der Menge“ – also größer als das Maximum.
Beispiel: Produkte teurer als alle Möbel
SELECT Produktname, Preis FROM Produkte WHERE Preis > ALL ( SELECT Preis FROM Produkte WHERE Kategorie = 'Möbel' );
| Produktname | Preis |
|---|---|
| Serverschrank | 890.00 |
Nur Produkte, die teurer sind als das teuerste Möbelstück, erfüllen die Bedingung – hier allein der Serverschrank.
ANY vs. ALL im Vergleich
| Ausdruck | TRUE, wenn der Wert … |
|---|---|
> ANY (menge) | größer als das Minimum ist |
> ALL (menge) | größer als das Maximum ist |
< ALL (menge) | kleiner als das Minimum ist |
Stolperfalle
Gibt die Subquery keine Zeile zurück, ist ALL per Definition TRUE (es gibt ja keinen Wert, der die Bedingung verletzt) – das überrascht oft. Achte außerdem auf NULL-Werte in der Menge: Sie können dazu führen, dass der Vergleich NULL (also nicht TRUE) ergibt und Zeilen unerwartet herausfallen. Die Subquery muss genau eine Spalte liefern.