Direkt zum Inhalt

UNION vs. UNION ALL in SQL

Entdecke die Unterschiede zwischen UNION und UNION ALL in Bezug auf Output und Leistung: UNION entfernt Duplikate, während UNION ALL sie einschließt.
Aktualisierte 15. Jan. 2025  · 7 Min. Lesezeit

Im SQL-Universum ist die Fähigkeit, Daten aus mehreren Abfragen zu kombinieren, eine grundlegende Voraussetzung, und SQL bietet leistungsstarke Funktionen wie UNION und UNION ALL, um dies zu erreichen. 

Wie du sehen wirst, ist das Verständnis der feinen Unterschiede zwischen den Funktionen UNION und UNION ALL in SQL für eine effiziente Datenabfrage und -verwaltung unerlässlich. In diesem Tutorium werden die wichtigsten Gemeinsamkeiten, Unterschiede und Einsatzszenarien anhand von Companion Datasets erklärt, damit du deine SQL-Abfragen optimieren kannst.

Die kurze Antwort: SQL UNION vs. UNION ALLE 

Der Hauptunterschied besteht darin, dass UNION doppelte Datensätze entfernt, während UNION ALL alle doppelten Datensätze enthält. Diese Unterscheidung verändert nicht nur die Anzahl der Zeilen im Abfrageergebnis, sondern wirkt sich auch auf die Leistung aus.

Betrachten wir zwei Beispieltabellen, employees_2023 und employees_2024, die Arbeitnehmerdatensätze für zwei verschiedene Jahre enthalten.

SELECT *
FROM employees_2023

employee_id

Name

Abteilung

1

Alice

HR

2

Bob

IT

3

Charlie

Finanzen

SELECT *
FROM employees_2024

employee_id

Name

Abteilung

2

Bob

IT

3

Charlie

Finanzen

4

David

Marketing

Verbinden wir nun unsere beiden Tabellen mit der Funktion UNION.

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

employee_id

Name

Abteilung

1

Lebendig

HR

2

Bob

IT

3

Charlie

Finanzen

4

David

Marketing

In diesem Ergebnis werden doppelte Datensätze entfernt. Vergleichen wir dies nun mit dem Ergebnis, das wir nach der Verwendung von UNION ALL erhalten.

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

employee_id

Name

Abteilung

1

Lebendig

HR

2

Bob

IT

3

Charlie

Finanzen

2

Bob

Bob

3

Charlie

Finanzen

4

David

Marketing

In diesem Ergebnis sind alle Datensätze enthalten, und Duplikate werden nicht entfernt.

Was ist UNION in SQL?

Die Funktion UNION fasst die Ergebnisse von zwei oder mehr SELECT Abfragen zu einer einzigen Ergebnismenge zusammen und entfernt doppelte Zeilen. Jede SELECT Anweisung innerhalb der UNION muss die gleiche Anzahl von Spalten haben. Außerdem müssen sie ähnliche Datentypen haben und die Spalten müssen in der gleichen Reihenfolge sein. Um die Funktion zu verstehen, erstellen wir im Folgenden zwei Beispieltabellen.

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 Lernprogramm verwenden werden: sales_team und support_team. Du kannst die Tabellen mit dem unten stehenden Code anzeigen.

SELECT * 
FROM sales_team

Datensätze in der <code624

Datensätze in der Tabelle sales_team. Bild vom Autor 

SELECT * 
FROM support_team

Datensätze in der <code624

Datensätze in der Tabelle support_team. Bild vom Autor 

Es handelt sich um kleine Tabellen mit jeweils drei Datensätzen, und die Spaltennamen sind selbsterklärend. Nachdem wir nun 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 aus dem <code624

Ausgabe der UNION-Funktion. Bild vom Autor 

Du kannst sehen, dass der doppelte Eintrag von employee_id, der den Wert von 3 annimmt, entfernt wird. 

Was sind die Anwendungsfälle für UNION in SQL?

Hier sind einige häufige Anwendungsfälle für die Funktion UNION.

  • Kombiniere Ergebnisse aus verschiedenen Tabellen: Wenn du Daten aus mehreren Tabellen zusammenführen und sicherstellen willst, dass es keine doppelten Datensätze gibt, ist UNION die richtige Funktion für dich.

  • Umgang mit verschiedenen Datenquellen: UNION ist nützlich, wenn du Tabellen aus verschiedenen Datenquellen kombinieren willst. 

  • Entfernen von Duplikaten über Abfragen hinweg: Wenn du die Einzigartigkeit der kombinierten Ergebnismenge sicherstellen willst, verwende UNION.

Was ist UNION ALL in SQL?

Die Funktion UNION ALL kombiniert die Ergebnisse von zwei oder mehr SELECT Abfragen, einschließlich aller doppelten Zeilen. Diese Funktion ist schneller als UNION, weil sie sich nicht die Mühe macht, Duplikate zu entfernen.

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

Ausgabe aus dem <code624

Ausgabe der Funktion UNION ALL. Bild vom Autor 

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

Was sind die Anwendungsfälle für UNION ALL in SQL?

Hier sind einige häufige Anwendungsfälle für die Funktion UNION ALL.

  • Kombiniere Ergebnisse mit Duplikaten: Verwende UNION ALL, wenn du Ergebnisse aus mehreren Abfragen kombinieren und alle doppelten Zeilen beibehalten musst.
  • Leistungsaspekte: UNION ALL ist zeitsparender als die Funktion UNION, weil sie keinen zusätzlichen Schritt zum Entfernen von Duplikaten erfordert.
  • Aggregieren von Daten aus verschiedenen Zeiträumen: Wenn du Daten aus verschiedenen Zeiträumen oder Quellen aggregierst und die doppelten Einträge erhalten bleiben sollen, ist UNION ALL vorzuziehen.
  • Berichterstattung und Analyse: Für Berichtszwecke, bei denen jeder Datensatz, einschließlich der Duplikate, benötigt wird, ist UNION ALL geeignet.

UNION und UNION ALL: Gemeinsamkeiten und Unterschiede

Erstellen wir eine zusammenfassende Tabelle mit den Gemeinsamkeiten und Unterschieden. 

Feature

UNION

UNION ALLE

Doppelte Zeilen

Entfernt

Inklusive

Leistung

Langsamer

Schneller

Anwendungsfall

Wenn du einzigartige Datensätze brauchst

Wenn du alle Aufzeichnungen brauchst

Ergebnis Größe

Kleiner

Größere

Unterschiede in der UNION- und UNION ALL-Syntax zwischen den SQL-Dialekten 

Während die grundlegende Syntax in den verschiedenen SQL-Dialekten gleich bleibt, gibt es je nach Plattform leichte Abweichungen. Wenn du dir den Code auf den meisten Plattformen wie SQL Server, Oracle, MySQL, PostgreSQL oder BigQuery ansiehst, sieht er in etwa so aus wie unten abgebildet. 

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 bleiben gleich, mit einigen Nuancen und Unterschieden:

  1. Umgang mit NULLs und Sortierungen: Verschiedene SQL-Dialekte können unterschiedliche Regeln für den Umgang mit NULL Werten und der String-Sortierung 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 Merkmale: Einige SQL-Dialekte bieten zusätzliche Funktionen oder Merkmale, die in Verbindung mit UNION und UNION ALL für komplexere Szenarien verwendet werden können.

Bei PySpark, das in einer verteilten Umgebung arbeitet, ist der Befehl deutlich anders. Der Code lautet wie folgt, wobei df1 und df2 die Namen der beiden Datenrahmen sind, die aus den beiden Tabellen bestehen, die wir oben erstellt haben. :

df1.union(df2)

Schlussgedanken

Es ist wichtig, die Anwendung von UNION im Gegensatz zu UNION ALL zu verstehen, um Daten effizient mit SQL zu verwalten. Während UNION nur eindeutige Datensätze auswählt, wählt UNION ALL alle Datensätze aus, was sich auf die Leistung und die Größe der Ergebnismenge auswirkt. Nutze dieses Wissen, um die passende Funktion für deine spezifischen Anforderungen auszuwählen. 

Wenn du dich weiterbilden möchtest, solltest du die folgenden Quellen nutzen:

  • Einführung in SQL: Lerne, wie man relationale Datenbanken mit SQL erstellt und abfragt.
  • SQL-Grundlagen: Erwerbe die grundlegenden SQL-Kenntnisse, die du brauchst, um mit deinen Daten zu interagieren und sie abzufragen. 
  • SQL Associate Zertifizierung: Stelle deine SQL-Kenntnisse unter Beweis, indem du geeignete Daten aus einer Datenbank extrahierst und sie zur Beantwortung gängiger Datenfragen verwendest.
  • SQL für Fortgeschrittene: In diesem praxisnahen Kurs lernst du alles, was du wissen musst, um Daten 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 Datensätze, während UNION ALL alle doppelten Datensätze enthält.

Gibt es einen Leistungsunterschied zwischen UNION und UNION ALL?

Ja, UNION ist generell langsamer, weil es Duplikate entfernt.

Gibt es bestimmte Anwendungsfälle, in denen UNION ALL gegenüber UNION vorzuziehen ist?

UNION ALL wird bevorzugt, wenn du alle Datensätze, einschließlich der Duplikate, benötigst, z. B. für Berichte und Analysen.

Wann sollte ich SQL UNION anstelle von UNION ALL verwenden?

Verwende UNION, wenn du eine kombinierte Ergebnismenge ohne Duplikate brauchst.

Wie wirken sich die verschiedenen SQL-Dialekte auf die Verwendung von UNION und UNION ALL aus?

Während die grundlegende Syntax einheitlich ist, kann es bei der Leistung, der Behandlung von NULLs und der Sortierung in verschiedenen SQL-Dialekten leichte Abweichungen geben.

Themen

SQL lernen mit DataCamp

Kurs

Introduction to SQL

2 hr
975.7K
Learn how to create and query relational databases using SQL in just two hours.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen