1. Wofür ist EXISTS besonders geeignet?
Antwort und Begründung anzeigen
EXISTS beschreibt eine Existenzprüfung auf dem Ergebnis einer Subquery.
SQL-WISSEN · Abfragestruktur
Wie Unterabfragen, Common Table Expressions, EXISTS und CASE komplexere SQL-Abfragen strukturieren und unterschiedliche fachliche Fragen ausdrücken.
Eine Subquery ist eine Abfrage innerhalb eines größeren SQL-Ausdrucks. Sie kann beispielsweise Werte für einen Vergleich liefern oder als Teil einer Existenzprüfung dienen.
EXISTS beantwortet die Frage, ob die zugehörige Subquery mindestens eine Zeile liefert. Dabei steht die Existenz passender Zeilen im Vordergrund, nicht eine einzelne zurückgegebene Kennzahl.
SELECT k.id, k.name
FROM kunde AS k
WHERE EXISTS (
SELECT 1
FROM bestellung AS b
WHERE b.kunde_id = k.id
);
Eine Common Table Expression gibt einem Zwischenergebnis innerhalb eines einzelnen SQL-Statements einen Namen. Gewöhnliche CTEs können dadurch verschachtelte Abfragen lesbarer strukturieren.
Rekursive CTEs und Fragen der Materialisierung oder Optimierung besitzen zusätzliche produktbezogene Regeln. Deshalb wird aus der Verwendung von WITH keine pauschale Performanceaussage abgeleitet.
WITH umsatz AS (
SELECT kunde_id, SUM(betrag) AS gesamt
FROM bestellung
GROUP BY kunde_id
)
SELECT kunde_id, gesamt
FROM umsatz
WHERE gesamt >= 1000;
CASE ist ein Ausdruck für bedingte Ergebniswerte. Er kann beispielsweise Kategorien bilden, ohne dafür die Zeilenmenge selbst zu verändern.
CTE, Subquery und CASE lösen unterschiedliche Strukturierungsprobleme: CTE und Subquery erzeugen beziehungsweise kapseln Abfrageergebnisse; CASE berechnet einen Wert abhängig von Bedingungen.
SELECT id,
CASE
WHEN betrag >= 1000 THEN 'hoch'
WHEN betrag >= 100 THEN 'mittel'
ELSE 'niedrig'
END AS klasse
FROM bestellung;
Praxisfall
Kunden sollen nur erscheinen, wenn Bestellungen existieren. Zusätzlich soll ihr Gesamtumsatz in Klassen eingeteilt werden.
Selbsttest
EXISTS beschreibt eine Existenzprüfung auf dem Ergebnis einer Subquery.
Die gewöhnliche CTE besitzt Statement-Scope. Eine View wird als Datenbankobjekt definiert und kann später erneut referenziert werden.
Transfer
Nehmen Sie eine verschachtelte Abfrage aus einem Projekt. Markieren Sie Existenzprüfung, Zwischenergebnis und bedingte Ergebnislogik getrennt und entscheiden Sie, ob Subquery, CTE, EXISTS oder CASE die jeweilige Absicht am klarsten ausdrückt.
Weiterlernen
Quellen, Prüfstand und Grenzen
Norm-/Standardreferenz
ISO/IEC 9075
Version: ISO/IEC 9075-1:2023
Bezug: SQL-Framework, Begriffe und Standardkontext.
Projekt-Primärdokumentation
SQLite
Version: SQLite 3.53.4
Bezug: SELECT, Subqueries sowie IN- und EXISTS-Kontext.
Projekt-Primärdokumentation
SQLite
Version: SQLite 3.53.4
Bezug: WITH, gewöhnliche und rekursive Common Table Expressions sowie SQLite-spezifische Hinweise.
Projekt-Primärdokumentation
SQLite
Version: SQLite 3.53.4
Bezug: CASE-Ausdruck, skalare Subquery-Auswertung einschließlich Erstzeilenverhalten, Ausdruckssemantik und NULL-bezogene Auswertungsregeln.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: EXISTS, IN und weitere Subquery-Ausdrücke.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: WITH, Common Table Expressions, Rekursion und PostgreSQL-spezifische Ausführungsaspekte.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: CASE und weitere bedingte Ausdrücke.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: Skalare Subqueries: ein Wertkontext, NULL bei keiner Ergebniszeile und Fehler bei mehr als einer Ergebniszeile.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: Skalare Subqueries als Einzelwert; NULL bei leerem Ergebnis und Fehlerkontext bei mehreren Ergebniszeilen.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: MySQL-Subquery-Syntax und -Semantik einschließlich EXISTS.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: WITH, gewöhnliche und rekursive Common Table Expressions.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: CASE-Operator und bedingte Ausdruckslogik.