Muster
Anti-Join
Die Zeilen einer Tabelle, die in einer anderen keinen Treffer haben: Kunden, die nie bestellt haben.
SELECT c.*
FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id);
Dasselbe Ergebnis mit LEFT JOIN … WHERE o.customer_id IS NULL. Vermeiden Sie NOT IN (subquery): Ein einziges NULL
in der Unterabfrage, und es liefert nichts.
SELECT c.customer_id, c.first_name, c.last_name FROM customers c WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id) ORDER BY c.customer_id LIMIT 5;
| customer_id | first_name | last_name |
|---|---|---|
| 4 | Elsa | Richard |
| 5 | Louis | Martinez |
| 7 | Tom | Dupont |
| 9 | Jade | Meier |
| 12 | Sacha | Dumont |