sql / intermediate
Snippet
Datensätze filtern mit korrelierten EXISTS-Klauseln
Eine korrelierte Unterabfrage greift auf Spalten der äußeren Abfrage zu. Der EXISTS-Operator wird zu true ausgewertet, sobald die innere Abfrage mindestens eine passende Zeile findet. Dies ermöglicht eine effiziente Prüfung auf Existenz, ohne äußere Zeilen zu duplizieren.
snippet.sql
sql
1
2
3
4
5
6
7
8
SELECT c.customer_id, c.company_nameFROM customers cWHERE EXISTS (SELECT 1FROM orders oWHERE o.customer_id = c.customer_idAND o.order_amount > 5000);
Erklärung
1
SELECT c.customer_id, c.company_name
Wählt die auszugebenden Spalten aus der Haupttabelle für Kunden aus.
2
FROM customers c
Bestimmt die Haupttabelle mit dem Alias 'c' zur Referenzierung in der Unterabfrage.
3
WHERE EXISTS (
Wertet eine Unterabfragebedingung aus und gibt true zurück, sobald eine passende innere Zeile gefunden wird.
4
SELECT 1
Wählt einen konstanten Wert in der EXISTS-Unterabfrage, da nur die Existenz von Zeilen zählt.
5
FROM orders o
Gibt die zu prüfende Bestellungs-Tabelle an.
6
WHERE o.customer_id = c.customer_id
Korreliert den inneren Bestelldatensatz mit der äußeren Kunden-ID.
7
AND o.order_amount > 5000
Wendet eine zusätzliche Filterbedingung auf den Bestellbetrag an.