Kurs
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 Tabelle sales_team. Bild vom Autor
SELECT *
FROM support_team

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 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
UNIONdie richtige Funktion für dich. -
Umgang mit verschiedenen Datenquellen:
UNIONist 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 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 ALList zeitsparender als die FunktionUNION, 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 ALLvorzuziehen. - Berichterstattung und Analyse: Für Berichtszwecke, bei denen jeder Datensatz, einschließlich der Duplikate, benötigt wird, ist
UNION ALLgeeignet.
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:
- Umgang mit NULLs und Sortierungen: Verschiedene SQL-Dialekte können unterschiedliche Regeln für den Umgang mit
NULLWerten und der String-Sortierung haben. - Leistungsoptimierungen: Die Leistungsoptimierungen und die Ausführungseffizienz können variieren.
- Fehlerbehandlung und Warnungen: Verschiedene Dialekte können Fehler und Warnungen bei der Verwendung dieser Funktionen unterschiedlich behandeln.
- Plattformspezifische Funktionen und Merkmale: Einige SQL-Dialekte bieten zusätzliche Funktionen oder Merkmale, die in Verbindung mit
UNIONundUNION ALLfü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.

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.