UNION ALL hängt die Ergebnisse mehrerer SELECT-Abfragen zu einer Liste zusammen – und behält dabei alle Zeilen, auch doppelte. Der verwandte Operator UNION entfernt Duplikate zusätzlich.

Grundform

SELECT name FROM kunden_2024
UNION ALL
SELECT name FROM kunden_2025;

Beide Abfragen müssen die gleiche Anzahl Spalten liefern, und die Datentypen müssen zueinander passen. Die Spaltennamen des Ergebnisses kommen aus der ersten Abfrage.

UNION oder UNION ALL?

  • UNION sortiert oder hasht das Gesamtergebnis, um Duplikate zu entfernen – das kostet Zeit und Speicher.
  • UNION ALL überspringt diesen Schritt und ist dadurch deutlich schneller.
  • Können Duplikate gar nicht vorkommen (etwa bei getrennten Zeiträumen oder Partitionen), ist UNION ALL fast immer die bessere Wahl.

Sortieren und begrenzen

SELECT name FROM kunden_2024
UNION ALL
SELECT name FROM kunden_2025
ORDER BY name;

Ein ORDER BY am Ende sortiert das gesamte Ergebnis. Eine Sortierung nur innerhalb eines Teil-SELECT ist standardmäßig nicht erlaubt – sie wird ignoriert beziehungsweise ist nur mit Klammern und LIMIT in einigen Datenbanken möglich. Das begrenzende LIMIT gilt ebenfalls für das Gesamtergebnis.

Verwandte Grundlagen: SQL UNION, SQL INTERSECT, SQL EXCEPT, SQL WHERE, SQL DISTINCT, SQL LIKE.