UNION ist ein SQL-Operator, der die Ergebnismengen mehrerer SELECT-Abfragen zu einer einzigen Liste zusammenführt. Im Gegensatz zu einem JOIN, der Spalten nebeneinanderlegt, stapelt UNION Zeilen untereinander – die Abfragen müssen also dieselbe Spaltenanzahl liefern.

UNION und UNION ALL

  • UNION entfernt doppelte Zeilen aus dem Gesamtergebnis.
  • UNION ALL behält alle Zeilen, auch Duplikate – und ist dadurch schneller, weil kein Sortieren zum Entfernen nötig ist.

Beispiel

SELECT name, 'Kunde' AS typ FROM kunden
UNION ALL
SELECT name, 'Lieferant' AS typ FROM lieferanten;

Typische Einsätze: gleiche Daten aus getrennten Tabellen zusammenführen, historische Monatstabellen vereinen oder Berichte über mehrere Datenbanken bündeln. Die Datentypen passender Spalten sollten zusammenpassen; die Spaltennamen des Ergebnisses kommen aus der ersten Abfrage.

Grenzen und Alternativen

Nicht jede Datenbank beherrscht weitere Mengenoperatoren gleich gut: INTERSECT (Schnittmenge) und EXCEPT/MINUS (Differenz) sind Standard-SQL, fehlten in MySQL aber lange und kamen erst mit Version 8.0. Wer stattdessen zeilenweise Vergleiche oder laufende Summen braucht, verwendet Window Functions; wer eine Abfrage von einer anderen abhängig machen will, setzt eine Subquery ein.

Die Basis aller Abfragen erklären die SQL-Grundlagen, das Zusammenführen von Tabellen der Artikel zu SQL-JOINs.