0Pricing
Coding Interview Prep · Lektion

INTERSECT und EXCEPT zum Vergleichen

Gemeinsame und abweichende Zeilen zweier Datensätze finden

INTERSECT und EXCEPT zum Vergleichen ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 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 Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Die Vergleichsoperatoren

INTERSECT und EXCEPT sind Mengenoperatoren zum Vergleichen zweier Ergebnismengen, nicht zu deren Zusammenführung. Interviewer verwenden sie bei Fragen wie „Welche Kunden sind in beiden Listen enthalten?“ oder „Welche Zeilen sind in A, aber nicht in B?“.

  • INTERSECT = Zeilen, die in beiden Abfragen vorkommen.
  • EXCEPT = Zeilen in der ersten Abfrage, die nicht in der zweiten vorkommen.

Was INTERSECT zurückgibt

INTERSECT gibt nur die unterschiedlichen Zeilen zurück, die in beiden Ergebnismengen vorkommen. Eine Zeile muss in jeder Spalte übereinstimmen, um als gemeinsam zu gelten.

Wie UNION entfernt ein INTERSECT ohne ALL Duplikate und gibt jede gemeinsame Zeile genau einmal zurück.

SELECT customer_id FROM orders_2023
INTERSECT
SELECT customer_id FROM orders_2024;
-- customers who ordered in BOTH years

Was EXCEPT zurückgibt

EXCEPT (in Oracle MINUS genannt) gibt die unterschiedlichen Zeilen aus der ersten Abfrage zurück, die in der zweiten nicht vorkommen. Der Operator ist gerichtet: A EXCEPT B liefert ein anderes Ergebnis als B EXCEPT A.

So ermitteln Sie auf natürliche Weise Datensätze, die in einer zweiten Datenmenge fehlen.

SELECT customer_id FROM orders_2023
EXCEPT
SELECT customer_id FROM orders_2024;
-- ordered in 2023 but NOT in 2024 (churned)

EXCEPT ist nicht symmetrisch

Ein beliebter Punkt im Vorstellungsgespräch: EXCEPT ist gerichtet. Wenn Sie die beiden Abfragen vertauschen, beantworten Sie eine andere Frage.

  • A EXCEPT B = in A, nicht in B.
  • B EXCEPT A = in B, nicht in A.

INTERSECT ist dagegen symmetrisch: A INTERSECT B entspricht B INTERSECT A.

-- new customers in 2024 (not seen in 2023):
SELECT customer_id FROM orders_2024
EXCEPT
SELECT customer_id FROM orders_2023;

Duplikate und der DISTINCT-Standard

Standardmäßige INTERSECT- und EXCEPT-Operationen arbeiten wie UNION mit unterschiedlichen Zeilen. Doppelte Eingabezeilen werden vor dem Vergleich zusammengefasst.

Einige Datenbanken unterstützen INTERSECT ALL und EXCEPT ALL, die die Anzahl der Vorkommen berücksichtigen, diese Varianten sind jedoch weniger verbreitet. Wenn der Interviewer nicht ALL sagt, gehen Sie von einer Semantik ohne Duplikate aus.

SELECT city FROM a
INTERSECT ALL
SELECT city FROM b;
-- multiplicity-aware (Postgres supports this; MySQL 8+ too)

Ganze Zeilen auf Gleichheit vergleichen

Beide Operatoren vergleichen gesamte Zeilen anhand aller ausgewählten Spalten. Zwei Zeilen sind nur dann gleich, wenn jede Spalte übereinstimmt. Dadurch eignen sich die Operatoren hervorragend, um festzustellen, ob zwei Tabellen identische Daten enthalten.

Wählen Sie die vollständige Menge der Spalten aus, die Sie vergleichen möchten, damit der Vergleich aussagekräftig ist.

SELECT id, name, email FROM prod_users
EXCEPT
SELECT id, name, email FROM staging_users;
-- rows in prod that differ from / are missing in staging

Das Muster für einen zweiseitigen Tabellenvergleich

Um zu prüfen, ob zwei Tabellen identisch sind, führen Sie EXCEPT in beide Richtungen aus und führen Sie die Unterschiede zusammen. Ist das zusammengeführte Ergebnis leer, stimmen die Tabellen exakt überein.

Das ist eine klassische Antwort in Vorstellungsgesprächen zur Datenvalidierung bei Migrationen und Abstimmungen.

(SELECT * FROM table_a EXCEPT SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_b EXCEPT SELECT * FROM table_a);
-- empty result => tables are identical

Wie NULL behandelt wird

Innerhalb von Mengenoperationen werden zwei NULL-Werte für die Zuordnung als gleich behandelt. Das unterscheidet sich vom üblichen Verhalten, bei dem NULL = NULL den Wert UNKNOWN ergibt.

Eine Zeile mit NULL in einer Spalte stimmt also mit einer anderen Zeile überein, die an derselben Position NULL enthält. Interviewer prüfen dies, weil es den gewöhnlichen Vergleichsregeln widerspricht.

-- (1, NULL) INTERSECT (1, NULL) -> returns (1, NULL)
SELECT id, region FROM a
INTERSECT
SELECT id, region FROM b;

Vorrang der Mengenoperatoren

Beim Mischen von Operatoren bindet INTERSECT gemäß dem SQL-Standard typischerweise stärker als UNION und EXCEPT. Um Mehrdeutigkeiten zu vermeiden, setzen Sie die Zweige in Klammern.

Wenn Sie im Vorstellungsgespräch erwähnen, dass Sie zur eindeutigen Festlegung der Auswertungsreihenfolge Klammern verwenden, zeigt das Ihre Erfahrung.

(SELECT id FROM a EXCEPT SELECT id FROM b)
UNION
(SELECT id FROM c);

INTERSECT/EXCEPT oder Joins auswählen

INTERSECT und EXCEPT sind kompakt und vergleichen vollständige Zeilen mit integrierter Deduplizierung. Joins sind flexibler: Sie können zusätzliche Spalten zurückgeben und festlegen, wie Duplikate behandelt werden.

Bevorzugen Sie die Mengenoperatoren, wenn die Frage ausschließlich lautet, welche Zeilen gemeinsam vorkommen oder fehlen. Wechseln Sie zu Joins, wenn Sie Spalten von beiden Seiten benötigen oder der SQL-Dialekt diese Operatoren nicht unterstützt.

Alles zusammenführen

Eine Zusammenfassung, die Sie aufsagen können: „INTERSECT gibt Zeilen zurück, die in beiden Abfragen vorkommen, und ist symmetrisch; EXCEPT gibt Zeilen zurück, die in der ersten, aber nicht in der zweiten Abfrage vorkommen, und ist gerichtet. Beide vergleichen ganze Zeilen, behandeln NULL-Werte als gleich und liefern standardmäßig Ergebnisse ohne Duplikate.“

Erwähnen Sie zusätzlich den zweiseitigen EXCEPT-Vergleich für die Nachfrage zur Datenabstimmung, und Sie decken das Thema vollständig ab.

Schnelltest

Sie möchten die Kunden ermitteln, die 2023 eine Bestellung aufgegeben, aber 2024 NICHT bestellt haben (abgewanderte Kunden).

Zusammenfassung

Wichtigste Punkte:

  • INTERSECT = Zeilen in beiden Abfragen; symmetrisch.
  • EXCEPT (in Oracle: MINUS) = Zeilen in der ersten, aber nicht in der zweiten Abfrage; gerichtet.
  • Beide vergleichen gesamte Zeilen und liefern standardmäßig unterschiedliche Ergebnisse.
  • NULL-Werte werden für die Zuordnung als gleich behandelt.
  • Ein zweiseitiges EXCEPT liefert einen vollständigen Tabellenvergleich.

Häufig gestellte Fragen

Ist die Lektion „INTERSECT und EXCEPT zum Vergleichen“ kostenlos?

Ja — der vollständige Text von „INTERSECT und EXCEPT zum Vergleichen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „INTERSECT und EXCEPT zum Vergleichen“?

Gemeinsame und abweichende Zeilen zweier Datensätze finden Du übst Coding Interview Prep 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 Coding Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. Coding Interview Prep 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 3 von 4.

Wie lange dauert die Lektion „INTERSECT und EXCEPT zum Vergleichen“?

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 Coding Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede Coding Interview Prep-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

  1. UNION oder UNION ALL
  2. Kompatibilität von Spaltenanzahl und Datentypen
  3. INTERSECT und EXCEPT zum Vergleichen
  4. Mengenvorgänge mit JOINs nachbilden
← Zurück zu Coding Interview Prep