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.

Übe es