EXISTS und NOT EXISTS
Prüfe, ob eine Unterabfrage irgendeine Zeile findet. EXISTS ist wahr, wenn sie eine findet; NOT EXISTS ist wahr, wenn sie keine findet.
Syntax
WHERE EXISTS (SELECT 1 FROM table WHERE …);WHERE NOT EXISTS (SELECT 1 FROM table WHERE …);
- SELECT 1 genügt: EXISTS prüft nur, ob eine Zeile zurückgegeben wird.
Beispiel
SELECT first_name FROM customers AS c WHERE EXISTS (SELECT 1 FROM orders AS o WHERE o.customer_id = c.customer_id);
Kunden, die mindestens eine Bestellung aufgegeben haben.
Verwendete Tabellen: customers, orders. Probiere es unten in einer Lektion aus.
Häufige Fehler
- Verwende NOT EXISTS statt NOT IN, wenn die Unterabfrage NULL zurückgeben kann: ein einziges NULL bewirkt, dass NOT IN keine Zeilen zurückgibt.