0Pricing
Coding Interview Prep · Lektion

UNION oder UNION ALL

Den Unterschied bei Duplikatentfernung und Performance verstehen und erfahren, warum meist UNION ALL gemeint ist

UNION oder UNION ALL ist eine kostenlose Coding Interview Prep-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 Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Warum Interviewer nach UNION fragen

Mengenoperationen hängen eine Ergebnismenge vertikal an eine andere an. UNION und UNION ALL sind die ersten Mengenoperatoren, nach denen Interviewer fragen, weil der Unterschied zwischen ihnen mit einer Antwort in einem Satz erklärt werden kann und zeigt, ob Sie die Kosten verstehen.

Die Frage lautet fast immer: „Was ist der Unterschied zwischen UNION und UNION ALL, und welche Variante sollten Sie verwenden?“ Eine gute Antwort erwähnt Duplikatentfernung, Sortierung und Performance in einem Satz.

Was UNION macht

UNION kombiniert die Zeilen zweier Abfragen zu einer einzigen Ergebnismenge und entfernt anschließend doppelte Zeilen. Zwei Zeilen gelten nur dann als Duplikate, wenn alle Spalten übereinstimmen.

Zum Entfernen der Duplikate muss die Engine alle kombinierten Zeilen sortieren oder hashen, was zusätzlichen Aufwand verursacht. UNION liefert im mathematischen Sinn eine Menge: ohne Wiederholungen.

SELECT city FROM customers
UNION
SELECT city FROM suppliers;

Was UNION ALL macht

UNION ALL verkettet die beiden Ergebnismengen und behält jede Zeile, einschließlich Duplikaten. Es führt keine Duplikatentfernung durch und muss zu diesem Zweck daher weder sortieren noch hashen.

Weil der Schritt zur Duplikatentfernung entfällt, ist UNION ALL fast immer schneller. Es ist die richtige Wahl, wenn Sie wissen, dass sich die Zeilen nicht überschneiden, oder wenn Duplikate ausdrücklich gewünscht sind.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers;

Der Performance-Unterschied

Die wichtigste Aussage fürs Interview: UNION ALL ist günstiger, weil es nie Duplikate entfernt. UNION muss jede kombinierte Zeile mit den anderen vergleichen, um Wiederholungen zu entfernen.

  • UNION = UNION ALL + ein impliziter DISTINCT-Schritt.
  • Bei großen Ergebnismengen kann dieser DISTINCT-Schritt den größten Teil der Abfragekosten verursachen.

Wenn Sie keine Duplikate entfernen müssen, verschwenden Sie mit UNION CPU und Arbeitsspeicher.

Beispiel mit Duplikaten

Nehmen wir an, beide Abfragen können die Zeile 'Paris' zurückgeben. Mit UNION erhalten Sie ein einzelnes Paris. Mit UNION ALL erhalten Sie Paris zweimal.

Interviewer fragen gern, wie viele Zeilen das Ergebnis enthält. Stellen Sie sich zuerst die unveränderte Verkettung vor und fragen Sie dann: Entfernt der Operator Wiederholungen?

-- customers.city: Paris, Lyon
-- suppliers.city: Paris, Nice
-- UNION     -> Paris, Lyon, Nice   (3 rows)
-- UNION ALL -> Paris, Lyon, Paris, Nice (4 rows)

Duplikate werden über alle Spalten definiert

Ein häufiger Fallstrick: Zwei Zeilen sind nur dann Duplikate, wenn jede ausgewählte Spalte gleich ist. Fügen Sie eine abweichende Spalte hinzu, sind die Zeilen keine Duplikate mehr, und UNION behält beide.

Deshalb gibt SELECT id, city bei Verwendung von UNION häufig mehr Zeilen zurück als SELECT city, selbst bei denselben Tabellen.

SELECT id, city FROM customers
UNION
SELECT id, city FROM suppliers;
-- ids differ -> few or no duplicates removed

Die kombinierte Ergebnismenge sortieren

Sie können ORDER BY nicht in die einzelnen Zweige setzen; es gilt für die gesamte kombinierte Ergebnismenge und muss einmal ganz am Ende stehen.

Ein Interviewer fragt möglicherweise, wo ORDER BY platziert wird. Die Antwort lautet: ein einzelnes ORDER BY nach der letzten Abfrage, das sich auf die Ausgabespalten anhand ihres Namens oder ihrer Position bezieht.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;

Spaltennamen stammen aus der ersten Abfrage

Wenn Sie im abschließenden ORDER BY auf Spalten verweisen, verwenden Sie die Namen (oder Aliase) aus dem ersten SELECT. Die Spaltennamen der zweiten Abfrage werden für die Beschriftung der Ausgabe ignoriert.

Das ist wichtig, wenn die Zweige ihre Spalten unterschiedlich benennen. Vergeben Sie im ersten Zweig einen Alias, um die Ausgabespaltenüberschrift festzulegen.

SELECT city AS location FROM customers
UNION ALL
SELECT town FROM suppliers
ORDER BY location;

Wann UNION die richtige Wahl ist

Verwenden Sie UNION nur, wenn sich Zeilen tatsächlich überschneiden können und Sie jede unterschiedliche Zeile genau einmal erhalten möchten. Beispiele sind das Zusammenführen zweier Kontaktlisten, in denen dieselbe Person in beiden vorkommen kann, oder das Erstellen einer deduplizierten Liste unterschiedlicher Werte aus mehreren Quellen.

Wenn Sie disjunkte Quellen garantieren können, liefert UNION ALL dasselbe Ergebnis schneller.

SELECT email FROM web_signups
UNION
SELECT email FROM store_signups;
-- one row per distinct email across both

Wann UNION ALL die richtige Wahl ist

Verwenden Sie UNION ALL, wenn keine Duplikate auftreten können, Duplikate von Bedeutung sind oder Sie anschließend aggregieren. Ein klassisches Muster ist das Zusammenführen monatlicher Partitionstabellen, die keine gemeinsamen Zeilen enthalten.

Tipp für Vorstellungsgespräche: Sagen Sie, dass UNION ALL der Standard ist und Sie nur zu UNION wechseln, wenn eine Deduplizierung tatsächlich erforderlich ist.

SELECT * FROM sales_2023
UNION ALL
SELECT * FROM sales_2024;

Alles zusammenführen

Eine überzeugende Antwort im Vorstellungsgespräch klingt etwa so: „UNION entfernt doppelte Zeilen, wodurch eine Sortierung oder ein Hashing erforderlich wird; UNION ALL behält alle Zeilen und ist schneller. Beide erfordern dieselbe Spaltenanzahl und kompatible Datentypen, und ein ORDER BY wird nur einmal am Ende angegeben. Ich verwende standardmäßig UNION ALL, sofern keine Deduplizierung erforderlich ist.“

Dieser eine Satz zeigt gleichzeitig fachliche Korrektheit und ein Bewusstsein für die Performance.

Schnelltest

Prüfen Sie, wie gut Sie den Unterschied zwischen UNION und UNION ALL verstanden haben.

Zusammenfassung

Wichtigste Punkte:

  • UNION = zusammenführen und doppelte Zeilen entfernen (implizites DISTINCT, zusätzliche Kosten).
  • UNION ALL = zusammenführen und alle Zeilen beibehalten, schneller und der sinnvolle Standard.
  • Als Duplikate gelten Zeilen nur, wenn alle Spalten übereinstimmen.
  • Ein einzelnes ORDER BY steht ganz am Ende und verwendet die Spaltennamen der ersten Abfrage.

Verwenden Sie standardmäßig UNION ALL und wechseln Sie nur zu UNION, wenn eine Deduplizierung wirklich erforderlich ist.

Häufig gestellte Fragen

Ist die Lektion „UNION oder UNION ALL“ kostenlos?

Ja — der vollständige Text von „UNION oder UNION ALL“ 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 „UNION oder UNION ALL“?

Den Unterschied bei Duplikatentfernung und Performance verstehen und erfahren, warum meist UNION ALL gemeint ist 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 1 von 4.

Wie lange dauert die Lektion „UNION oder UNION ALL“?

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