Direkt zum Inhalt

UNION vs. UNION ALL in SQL

Schau dir mal die Unterschiede bei der Ausgabe und Leistung zwischen UNION und UNION ALL an: UNION entfernt Duplikate, während UNION ALL sie beibehält.
Aktualisiert 15. Jan. 2026  · 8 Min. lesen

In der SQL-Welt ist es echt wichtig, Daten aus mehreren Abfragen zusammenzufassen, und SQL hat dafür coole Funktionen wie „ UNION “ und „ UNION ALL “. 

Wie du sehen wirst, ist es für eine effiziente Datenabfrage und -verwaltung unerlässlich, die feinen Unterschiede zwischen den Funktionen „ UNION “ und „ UNION ALL “ in SQL zu verstehen. Dieses Tutorial erklärt die wichtigsten Gemeinsamkeiten, Unterschiede und Anwendungsszenarien anhand von Begleitdatensätzen, damit du deine SQL-Abfragen optimieren kannst.

Die kurze Antwort: SQL UNION vs. UNION ALL 

Der Hauptunterschied ist, dass „ UNION “ doppelte Datensätze entfernt, während „ UNION ALL “ alle Duplikate mit einbezieht. Dieser Unterschied ändert nicht nur die Anzahl der Zeilen im Abfrageergebnis, sondern wirkt sich auch auf die Leistung aus.

Feature UNION UNION ALL
Duplikate Entfernt doppelte Einträge Bewahrt alle Unterlagen auf (auch die doppelten)
Leistung Langsamer (muss Daten sortieren/hashen, um Duplikate zu finden) Schneller (hängt die Daten einfach an das Ergebnis an)
Betrieb Mengenlehre (Mathematische Vereinigung) Ergebnisse anhängen / stapeln

Schauen wir uns zwei Beispiel-Tabellen an: „ employees_2023 “ und „ employees_2024 “, die die Mitarbeiterdaten für zwei verschiedene Jahre zeigen.

SELECT *
FROM employees_2023

Mitarbeiter-ID

Name

Abteilung

1

Alice

HR

2

Bob

IT

3

Charlie

Finanzen

SELECT *
FROM employees_2024

Mitarbeiter-ID

Name

Abteilung

2

Bob

IT

3

Charlie

Finanzen

4

David

Marketing

Jetzt verbinden wir unsere beiden Tabellen mit der Funktion „ UNION “.

SELECT employee_id, name, department FROM employees_2023 
UNION 
SELECT employee_id, name, department FROM employees_2024;

Mitarbeiter-ID

Name

Abteilung

1

Alice

HR

2

Bob

IT

3

Charlie

Finanzen

4

David

Marketing

In diesem Ergebnis werden doppelte Einträge rausgeschmissen. Vergleichen wir das jetzt mit dem Ergebnis, das wir nach der Verwendung von „ UNION ALL “ bekommen.

SELECT employee_id, name, department FROM employees_2023 
UNION ALL 
SELECT employee_id, name, department FROM employees_2024;

Mitarbeiter-ID

Name

Abteilung

1

Lebendig

HR

2

Bob

IT

3

Charlie

Finanzen

2

Bob

IT

3

Charlie

Finanzen

4

David

Marketing

In diesem Ergebnis sind alle Datensätze dabei, und Duplikate werden nicht rausgefiltert.

Was ist UNION in SQL?

Die Funktion „ UNION “ kombiniert die Ergebnisse von zwei oder mehr „ SELECT “-Abfragen zu einem einzigen Ergebnis und entfernt dabei doppelte Zeilen. Jede Anweisung „ SELECT “ innerhalb der Anweisung „ UNION “ muss die gleiche Anzahl von Spalten haben. Außerdem müssen sie ähnliche Datentypen haben, und die Spalten müssen auch in derselben Reihenfolge sein. Um die Funktion zu verstehen, erstellen wir unten zwei Beispiel-Tabellen.

CREATE TABLE sales_team (
    employee_id INT,
    employee_name VARCHAR(50)
);
INSERT INTO sales_team (employee_id, employee_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');
CREATE TABLE support_team ( 
employee_id INT, 
employee_name VARCHAR(50)
 );
INSERT INTO support_team (employee_id, employee_name) VALUES 
(3, 'Charlie'), 
(4, 'David'), 
(5, 'Eve');

Der obige Code erstellt die beiden Tabellen, die wir in diesem Tutorial verwenden werden: „ sales_team “ und „ support_team “. Du kannst die Tabellen mit dem folgenden Code anzeigen.

SELECT * 
FROM sales_team

Einträge im <code624

Datensätze in der Tabelle „sales_team“. Bild vom Autor 

SELECT * 
FROM support_team

Einträge im <code624

Einträge in der Tabelle „support_team“. Bild vom Autor 

Das sind kleine Tabellen mit jeweils drei Datensätzen, und die Spaltennamen sind echt selbsterklärend. Jetzt, wo wir unsere beiden Tabellen erstellt haben, wenden wir die Funktion „ UNION “ an.

SELECT employee_id, employee_name
    FROM sales_team
   UNION
SELECT employee_id, employee_name
    FROM support_team;

Ausgabe von <code624

Ausgabe der UNION-Funktion. Bild vom Autor 

Du kannst sehen, dass der doppelte Eintrag „ employee_id “, der den Wert „ 3 “ hat, entfernt wurde. 

Wofür kann man UNION in SQL verwenden?

Hier sind ein paar typische Anwendungsfälle für die Funktion „ UNION “.

  • Ergebnisse aus verschiedenen Tabellen zusammenfassen: Wenn du Daten aus mehreren Tabellen zusammenführen und sicherstellen willst, dass keine doppelten Datensätze dabei sind, ist die Funktion „ UNION “ genau das Richtige.

  • Umgang mit verschiedenen Datenquellen:UNION ” ist super, wenn du Tabellen aus verschiedenen Datenquellen zusammenführen willst. 

  • Duplikate über Abfragen hinweg entfernen: Wenn du sichergehen willst, dass die kombinierten Ergebnisse einzigartig sind, nimm „ UNION “.

Was ist UNION ALL in SQL?

Die Funktion „ UNION ALL “ kombiniert die Ergebnisse von zwei oder mehr „ SELECT “-Abfragen, inklusive aller doppelten Zeilen. Diese Funktion ist schneller als „ UNION “, weil sie keine Duplikate entfernt.

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Ausgabe von <code624

Ausgabe der Funktion UNION ALL. Bild vom Autor 

Du siehst, dass in diesem Fall die doppelten Einträge wiederholt und nicht entfernt werden.

Wofür kann man UNION ALL in SQL verwenden?

Hier sind ein paar typische Anwendungsfälle für die Funktion „ UNION ALL “.

  • Ergebnisse mit Duplikaten kombinieren: Benutze „ UNION ALL “, wenn du Ergebnisse aus mehreren Abfragen zusammenführen und alle doppelten Zeilen behalten willst.
  • Leistungsaspekte: Die Funktion „ UNION ALL ” ist zeitsparender als die Funktion „ UNION ”, weil man nicht extra Duplikate entfernen muss.
  • Daten aus verschiedenen Zeiträumen zusammenfassen: Wenn du Daten aus verschiedenen Zeiträumen oder Quellen zusammenfasst und die doppelten Einträge behalten willst, ist „ UNION ALL “ die bessere Wahl.
  • Berichterstattung und Analyse: Für Berichte, wo jeder Datensatz, auch die doppelten, wichtig ist, passt „ UNION ALL “ super.

UNION und UNION ALL: Ähnlichkeiten und Unterschiede

Lass uns eine Übersichtstabelle mit den Gemeinsamkeiten und Unterschieden erstellen. 

Feature

UNION

UNION ALL

Doppelte Zeilen

Entfernt

Mit dabei

Leistung

Langsamer

Schneller

Anwendungsfall

Wenn du einzigartige Datensätze brauchst

Wenn du alle Unterlagen brauchst

Ergebnisgröße

Kleiner

Größer

Unterschiede in der Syntax von UNION und UNION ALL in verschiedenen SQL-Dialekten 

Die grundlegende Syntax ist zwar in den verschiedenen SQL-Dialekten gleich, aber je nach Plattform gibt's kleine Unterschiede. Wenn du dir den Code anschaust, sieht er bei den meisten Plattformen wie SQL Server, Oracle, MySQL, PostgreSQL oder BigQuery ungefähr so aus wie unten gezeigt. 

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Die grundlegenden Befehle in diesen SQL-Dialekten sind im Großen und Ganzen gleich, mit ein paar kleinen Unterschieden:

  1. Umgang mit NULL-Werten und Sortierungen: Verschiedene SQL-Dialekte können unterschiedliche Regeln für die Behandlung von Werten vom Typ „ NULL “ und die Sortierung von Zeichenfolgen haben.
  2. Leistungsoptimierungen: Die Leistungsoptimierungen und die Ausführungseffizienz können variieren.
  3. Fehlerbehandlung und Warnungen: Verschiedene Dialekte können Fehler und Warnungen bei der Verwendung dieser Funktionen unterschiedlich behandeln.
  4. Plattformspezifische Funktionen und Features: Einige SQL-Dialekte bieten vielleicht zusätzliche Funktionen oder Features, die zusammen mit UNION und UNION ALL für komplexere Szenarien genutzt werden können.

Bei PySpark, das in einer verteilten Umgebung läuft, ist der Befehl ganz anders. Der Code ist unten angegeben, wobei angenommen wird, dass „ df1 ” und „ df2 ” die Namen der beiden Datenrahmen sind, die aus den beiden oben erstellten Tabellen bestehen. :

df1.union(df2)

3 Regeln und häufige Fehler bei der Verwendung von SQL UNION

Die Befehle „ UNION “ und „ UNION ALL “ sind zwar leistungsstark, aber ziemlich streng, was die Syntax angeht. Wenn deine Abfrage einen Fehler zurückgibt, verstößt sie wahrscheinlich gegen eine dieser drei goldenen Regeln.

1. Die Spaltenanzahl stimmt nicht überein

Der häufigste Fehler, auf den Nutzer stoßen, ist eine nicht übereinstimmende Spaltenanzahl. Um zwei Datensätze zusammenzufügen, muss die „Form“ der Tabellen gleich sein. Du kannst eine Tabelle mit 3 Spalten nicht auf eine Tabelle mit 2 Spalten setzen.

Der Fehler:

-- This will fail because the column counts do not match
SELECT employee_id, name, department 
FROM employees_2023
UNION
SELECT employee_id, name 
FROM employees_2024;

Die Lösung: Stell sicher, dass beide „ SELECT “-Anweisungen genau die gleiche Anzahl an Spalten anfordern. Wenn in der zweiten Tabelle Daten fehlen (wie department), kannst du „ NULL “ als Platzhalter auswählen, damit die Zählungen übereinstimmen:

SELECT employee_id, name, department FROM employees_2023
UNION
SELECT employee_id, name, NULL as department FROM employees_2024;

2. Kompatibilität der Datentypen

SQL kombiniert die Ergebnisse nach Position, nicht nach Spaltennamen. Der Datentyp der ersten Spalte in deiner ersten Abfrage muss mit dem Datentyp der ersten Spalte in deiner zweiten Abfrage übereinstimmen (oder kompatibel sein).

Der Fehler: Wenn du aus Versehen die Reihenfolge der Spalten vertauschst, versucht SQL, eine Zahl (ID) über eine Zeichenfolge (Name) zu stapeln, was zu einem Datentypkonvertierungsfehler führt.

-- This fails because Column 1 (ID - INT) cannot combine with Column 1 (Name - VARCHAR)
SELECT employee_id, name FROM employees_2023
UNION
SELECT name, employee_id FROM employees_2024;

Die Lösung: Überprüfe immer, ob deine Spalten in jeder ` SELECT `-Anweisung innerhalb der ` UNION`-Anweisung in genau derselben Reihenfolge aufgeführt sind.

3. Einschränkungen bei ORDER BY

Oft ist unklar, wo man die Klausel „ ORDER BY “ (und) einfügen soll. Du kannst die einzelnen Unterabfragen innerhalb einer „ UNION “-Operation nicht sortieren; du kannst nur das endgültige kombinierte Ergebnis sortieren.

Der Fehler: Wenn du „ ORDER BY “ vor der letzten Abfrage benutzt, kommt es zu einem Syntaxfehler.

-- INCORRECT SYNTAX
SELECT employee_id, name FROM employees_2023 
ORDER BY employee_id -- You cannot sort here!
UNION
SELECT employee_id, name FROM employees_2024;

Die Lösung: Schreib die Klausel „ ORDER BY “ ganz ans Ende deiner Abfrage. Das sortiert die ganze kombinierte Ergebnismenge.

-- CORRECT SYNTAX
SELECT employee_id, name FROM employees_2023
UNION
SELECT employee_id, name FROM employees_2024
ORDER BY employee_id; -- Sorts the final result

Abschließende Gedanken

Es ist wichtig, den Unterschied zwischen „ UNION ” und „ UNION ALL ” zu verstehen, um Daten mit SQL effizient zu verwalten. Während „ UNION “ nur eindeutige Datensätze auswählt, holt „ UNION ALL “ alle raus, was sich auf die Leistung und die Größe der Ergebnismenge auswirkt. Nutze dieses Wissen, um die richtige Funktion für deine speziellen Anforderungen auszuwählen. 

Wenn du mehr wissen willst, schau dir doch mal die folgenden Quellen an:

  • Einführung in SQL: Lerne, wie du mit SQL relationale Datenbanken erstellst und abfragst.
  • SQL-Grundlagen: Lerne die grundlegenden SQL-Kenntnisse, die du brauchst, um mit deinen Daten zu arbeiten und sie abzufragen. 
  • SQL-Associate-Zertifizierung: Zeig deine SQL-Kenntnisse, indem du die richtigen Daten aus einer Datenbank holst und sie nutzt, um typische Datenfragen zu beantworten.
  • SQL für Fortgeschrittene: In diesem praktischen Kurs lernst du alles, was du wissen musst, um Daten schon heute mit deinem eigenen SQL-Code zu analysieren.

Vikash Singh's photo
Author
Vikash Singh
LinkedIn

Erfahrener Profi in den Bereichen Datenwissenschaft, künstliche Intelligenz, Analytik und Datenstrategie.

Häufig gestellte Fragen

Was ist der Hauptunterschied zwischen SQL UNION und UNION ALL?

UNION entfernt doppelte Einträge, während „ UNION ALL “ alle Duplikate mit rein nimmt.

Gibt's einen Unterschied in der Leistung zwischen UNION und UNION ALL?

Ja, „ UNION “ ist meistens langsamer, weil es Duplikate entfernt.

Gibt's bestimmte Fälle, wo UNION ALL besser ist als UNION?

UNION ALL ist besser, wenn du alle Datensätze brauchst, auch die doppelten, wie zum Beispiel bei Berichten und Analysen.

Wann sollte ich SQL UNION anstelle von UNION ALL verwenden?

Benutz „ UNION “, wenn du eine kombinierte Ergebnismenge ohne Duplikate brauchst.

Wie beeinflussen verschiedene SQL-Dialekte die Verwendung von UNION und UNION ALL?

Die grundlegende Syntax ist zwar einheitlich, aber es kann kleine Unterschiede bei der Leistung, der Behandlung von NULL-Werten und der Sortierung zwischen den verschiedenen SQL-Dialekten geben.

Themen

Lerne SQL mit DataCamp

Kurs

Datenbearbeitung in SQL

4 Std.
306.9K
Lerne, mit komplexen SQL-Abfragen diverse Data-Science-Aufgaben zu lösen und Datensätze für Analysen in PostgreSQL vorzubereiten.
Details anzeigenRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

Tutorial

Python-Anweisungen IF, ELIF und ELSE

In diesem Tutorial lernst du ausschließlich Python if else-Anweisungen kennen.
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Python-Schleifen-Tutorial

Ein umfassendes Einführungs-Tutorial zu Python-Schleifen. Lerne und übe while- und for-Schleifen, verschachtelte Schleifen, die Schlüsselwörter break und continue, die Range-Funktion und vieles mehr!
Satyabrata Pal's photo

Satyabrata Pal

Tutorial

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

Tutorial

Wie man in Python einen Eintrag aus einer Liste löscht

Lerne, wie du Elemente aus einer Liste in Python löschen kannst. Mach dich mit Methoden wie remove(), pop() und del für die Listenverwaltung vertraut.
Allan Ouko's photo

Allan Ouko

Tutorial

Python .append() und .extend() Methoden Tutorial

Lerne, wie du mit den Methoden .append() und .extend() Elemente zu einer Liste hinzufügst.
DataCamp Team's photo

DataCamp Team

Mehr anzeigenMehr anzeigen