UNION ALL
Joins & Mengen
Bedeutung
UNION ALL funktioniert wie UNION – es stapelt die Zeilen mehrerer SELECT-Abfragen untereinander. Der entscheidende Unterschied: UNION ALL behält alle Zeilen, auch Duplikate. Es findet keine Duplikat-Prüfung statt.
Regeln
- Gleiche Anzahl Spalten und kompatible Datentypen wie bei
UNION. - Doppelte Zeilen bleiben erhalten.
- In der Regel schneller als
UNION, weil das Entfernen der Duplikate (Sortieren) entfällt.
Syntax
SELECT spalte FROM tabelleA UNION ALL SELECT spalte FROM tabelleB;
Beispiel: Unterschied direkt sichtbar
SELECT Land FROM Kunden UNION ALL SELECT Land FROM Kunden WHERE Land = 'DE';
| Land |
|---|
| DE |
| DE |
| FR |
| DE |
| DE |
Die DE-Zeilen erscheinen mehrfach, weil die zweite Abfrage sie noch einmal anhängt. Mit UNION (ohne ALL) bliebe pro Land nur eine Zeile übrig: nämlich DE und FR.
UNION oder UNION ALL?
| Frage | Empfehlung |
|---|---|
| Duplikate stören? | UNION |
| Duplikate egal / keine vorhanden? | UNION ALL |
| Performance wichtig? | UNION ALL |
Hinweis
Wenn du sicher bist, dass keine Duplikate auftreten können, ist UNION ALL die bessere Wahl – du sparst dir die unnötige Sortierarbeit. Greife nur dann zu UNION, wenn du Duplikate tatsächlich entfernen willst.