UNION
Joins & Mengen
Bedeutung
Mit UNION hängst du die Ergebnisse zweier (oder mehrerer) SELECT-Abfragen untereinander zu einem gemeinsamen Ergebnis zusammen. Während ein Join Tabellen nebeneinander verbindet (mehr Spalten), stapelt UNION Zeilen (mehr Zeilen).
Regeln
- Alle beteiligten
SELECT-Abfragen müssen die gleiche Anzahl Spalten haben. - Die Spalten müssen in kompatiblen Datentypen und in derselben Reihenfolge stehen.
UNIONentfernt automatisch doppelte Zeilen (wieSELECT DISTINCT).- Die Spaltennamen des Ergebnisses stammen aus der ersten Abfrage.
Syntax
SELECT spalte1, spalte2 FROM tabelleA UNION SELECT spalte1, spalte2 FROM tabelleB;
Beispiel: alle Städte aus zwei Quellen
Angenommen, du möchtest eine Liste aller vorkommenden Städte – sowohl die der Kunden als auch (hypothetisch) Lieferstädte. Hier kombinieren wir zwei Abfragen auf die Kundentabelle nach Land:
SELECT Stadt FROM Kunden WHERE Land = 'DE' UNION SELECT Stadt FROM Kunden WHERE Land = 'FR';
| Stadt |
|---|
| Berlin |
| Hamburg |
| Paris |
Käme Berlin in beiden Teilabfragen vor, würde es durch UNION trotzdem nur einmal erscheinen.
Was muss bei den per UNION verbundenen SELECT-Abfragen übereinstimmen?
Stolperfalle
Das Entfernen der Duplikate kostet bei großen Datenmengen Rechenzeit, weil die Datenbank dafür sortieren muss. Brauchst du die Duplikate gar nicht entfernt – oder weißt, dass keine vorkommen – nimm das schnellere UNION ALL.