Exists
prüft, ob das Ergebnis einer Unterabfrage leer ist oder nicht.
SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
FROM customers.id = orders.customer_id
)
Das Beispiel liefert alle Kunden, die noch keine Bestellung aufgegeben haben – für die keine Bestellung existiert. Not Exists
wird auch als Anti-Join, Exists
als Semi-Join bezeichnet.
Die in der Unterabfrage selektierten Spalten sind irrelevant. Der Stern (*
) ist üblich und bedeutet in diesem Zusammenhang nicht „alle Spalten“. Exists
kann überall verwendet werden, wo Bedingungen erlaubt sind: Where
, Having
, Case When
, ….
Standard-Funktionen
F671, „Subqueries in CHECK constraints“
Produktspezifische Funktionen: exception join
.
Das Exists
-Prädikat ist in ISO/IEC 9075-2:2023 als verpflichtende Funktion E061-08 definiert.
20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.
Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how