Skalare, Zeilen- und Tabellenunterabfragen
Verwenden Sie Unterabfragen, die einen einzelnen Wert, eine einzelne Zeile oder eine vollständige Tabelle zurückgeben, und platzieren Sie sie in SELECT-, FROM- und WHERE-Klauseln.
Skalare, Zeilen- und Tabellenunterabfragen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist eine Unterabfrage?
Eine Unterabfrage ist ein SELECT innerhalb einer anderen SQL-Anweisung. Sie kann Folgendes sein:
- Eine skalare Unterabfrage – gibt einen einzelnen Wert zurück
- Eine Zeilen-Unterabfrage – gibt eine einzelne Zeile zurück
- Eine Tabellen-Unterabfrage – gibt eine Relation zurück (wird in FROM verwendet)
Skalare Unterabfrage
Wird überall dort verwendet, wo ein einzelner Wert erwartet wird:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Zeilen-Unterabfrage
Gibt eine Zeile mit mehreren Spalten zurück. Weniger häufig, hauptsächlich zusammen mit Zeilenkonstruktoren verwendet:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Tabellen-Unterabfrage in FROM
Behandeln Sie ein Abfrageergebnis wie eine temporäre Tabelle:
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;Aliase für FROM-Unterabfragen
Jede FROM-Unterabfrage benötigt in PostgreSQL einen Alias – auch wenn Sie ihn nicht verwenden:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredUnterabfragen in WHERE
Filtern Sie anhand einer abgeleiteten Wertemenge:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Prüfen Sie, ob eine Unterabfrage mindestens eine Zeile zurückgibt:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Unterabfragen in SELECT
Betten Sie eine skalare Unterabfrage pro Zeile ein:
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.Unterabfragen als Ausdrücke
Eine skalare Unterabfrage, die mehr als eine Zeile zurückgibt, ist ein Fehler:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionWann Sie auf JOIN umstellen sollten
Viele Ausdrücke der Form „x IN (SELECT...)“ können als JOIN umgeschrieben werden. Wählen Sie die Form, die verständlicher ist; moderne Abfrageplaner erzeugen häufig denselben Plan.
Unterabfragen vs. CTEs
Wenn Sie dieselbe Unterabfrage zweimal benötigen, geben Sie ihr mit einem CTE einen Namen – das wird in der nächsten Lektion behandelt.
Zusammenfassung
Unterabfragen gibt es in drei Varianten.
- Skalar in SELECT/WHERE
- Zeile in Gleichheitstests
- Tabelle in FROM
- EXISTS für Tests auf „beliebige Übereinstimmung“
Kurzer Test
Welche Form einer Unterabfrage wird innerhalb einer FROM-Klausel als temporäre Tabelle verwendet?
Häufig gestellte Fragen
Ist die Lektion „Skalare, Zeilen- und Tabellenunterabfragen“ kostenlos?
Ja — der vollständige Text von „Skalare, Zeilen- und Tabellenunterabfragen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Skalare, Zeilen- und Tabellenunterabfragen“?
Verwenden Sie Unterabfragen, die einen einzelnen Wert, eine einzelne Zeile oder eine vollständige Tabelle zurückgeben, und platzieren Sie sie in SELECT-, FROM- und WHERE-Klauseln. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Skalare, Zeilen- und Tabellenunterabfragen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Skalare, Zeilen- und Tabellenunterabfragen
- Korrelierte und nicht korrelierte Unterabfragen
- Common Table Expressions (WITH)
- Rekursive CTEs für Hierarchien