Union
Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 48 von 72.
Unions unterscheiden sich von Joins. Joins verwenden Bedingungen, um Tabellen zu kombinieren, aber Unions fügen einfach zwei Tabellen übereinander hinzu. Um UNION zu verwenden, schreiben wir:
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2Beide Select-Anweisungen müssen die folgenden Regeln befolgen:
- Die Anzahl der Felder muss gleich sein
- Die Reihenfolge ist wichtig
- Die Spalten an der gleichen Stelle müssen mit den Datentypen übereinstimmen
Nehmen wir zum Beispiel an, wir haben die folgenden Tabellen:
germany_people
| id | Name |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | Name |
| 1 | George |
| 2 | Lena |
Problem: Wir möchten eine große Tabelle mit allen Namen erstellen, die wir haben.
SELECT name from germany_people
UNION
SELECT name from england_peopleErgebnis:
| Name |
| Lena |
| Leonie |
| George |
UNION gibt nur eindeutige Werte zurück, während UNION ALL alle Datensätze so wie sie sind zurückgibt:
SELECT name from germany_people
UNION ALL
SELECT name from england_peopleErgebnis:
| Name |
| Lena |
| Leonie |
| George |
| Lena |
Sie können UNION ALL auch mit Aggregatfunktionen, GROUP BY und ORDER BY kombinieren, um Daten über mehrere Tabellen hinweg zusammenzufassen. Der Trick besteht darin, das UNION ALL in eine Unterabfrage einzuschließen und dann Gruppierung und Sortierung darauf anzuwenden.
Angenommen, wir möchten beispielsweise zählen, wie oft jeder Name in beiden Tabellen vorkommt:
SELECT name, COUNT(*) AS total_count
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESCErgebnis:
| name | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
Hier wird UNION ALL (nicht UNION) verwendet, damit Duplikate wie Lena beibehalten werden — andernfalls würden sie vor dem Zählen entfernt werden. Die Unterabfrage führt alle Zeilen zusammen, und anschließend fassen GROUP BY + COUNT diese zusammen. ORDER BY sortiert das Endergebnis.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>sales_2009</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2010</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2011</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong>
Es gibt 3 Verkaufstabellen.
Finden Sie die Summe der Verkäufe für jedes Produkt aus allen Tabellen zusammen.
Das Ergebnis sollte die product_id und die Gesamtverkäufe enthalten.
Nennen Sie diese Spalte total_sales.
Sortieren Sie die Ergebnisse nach den Gesamtverkäufen in absteigender Reihenfolge.
Spickzettel
UNION kombiniert Tabellen, indem sie vertikal gestapelt werden. Im Gegensatz zu Joins verwenden Unions keine Bedingungen – sie fügen Tabellen einfach übereinander hinzu.
Grundlegende UNION-Syntax:
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2UNION-Regeln:
- Die Anzahl der Felder muss gleich sein
- Die Reihenfolge ist wichtig
- Spalten an der gleichen Position müssen übereinstimmende Datentypen haben
UNION vs. UNION ALL:
UNIONgibt nur eindeutige Werte zurückUNION ALLgibt alle Datensätze einschließlich Duplikate zurück
SELECT name FROM germany_people
UNION
SELECT name FROM england_peopleSELECT name FROM germany_people
UNION ALL
SELECT name FROM england_peopleSie können UNION ALL innerhalb einer Unterabfrage verwenden und dann GROUP BY, ORDER BY sowie Aggregatfunktionen auf das kombinierte Ergebnis anwenden:
SELECT name, COUNT(*) AS total
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS all_people
GROUP BY name
ORDER BY total DESCDies zählt, wie oft jeder Name in beiden Tabellen vorkommt, einschließlich Duplikate.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns