Grundkurs SQL

5.4  Vereinigungsabfrage – UNION

UNION wird benutzt um das Ergebnis von zwei oder mehreren Abfragen miteinander zu kombinieren, so dass eine einzelne Ergebnistabelle ausgegeben wird. Die Ergebnisse werden hintereinander und nicht wie beim JOIN nebeneinander gesetzt.

Die prinzipielle Schreibweise lautet:

SELECT feldliste_1
FROM   tabelle_1

UNION [ALL]

SELECT feldliste_2
FROM   tabelle_2

Bei der UNION-Abfrage werden mehrfach vorkommende Datensätze zusammengefasst (entfernt). Wenn Sie das Schlüsselwort ALL für UNION nicht benutzen, sind alle zurückgegebenen Zeilen eindeutig (unique), als hätten Sie ein DISTINCT für den gesamten Ergebnissatz gemacht (UNION DISTINCT kann auch geschrieben werden, ist aber nicht erforderlich, da es der Voreinstellung entspricht). Wenn Sie ALL angeben, erhalten Sie alle übereinstimmenden Zeilen von allen benutzten SELECT-Statements.

Die Spaltennamen der ersten SELECT-Anweisung werden für die Ergebnisrückgabe benutzt. Spalten, die an der gleichen Position der verschiedenen Abfragen stehen, sollten den gleichen Datentyp haben.
In früheren Versionen von MySQL mussten der Datentyp und die Länge des Datentyps übereinstimmen!

Beispielsweise liefert eine Union-Abfrage auf der Kundentabelle und der Tabelle der Mitarbeiter (tbl_kunden und tbl_mitarbeiter) alle Kunden und gleichzeitig alle Mitarbeiter, wobei diejenigen, die beides zugleich sind, nur einmal vorkommen.

[27]SELECT name, vorname, strasse
FROM   tbl_kunden

UNION

SELECT name, vorname, strasse
FROM   tbl_mitarbeiter

Achten Sie darauf, dass die Spalten in den verschiedenen Abfragen in der richtigen Reihenfolge sind, sonst kann es zu unschönen Abfrageergebnissen kommen. Eine Umbenennung der Spalten ist auch hier mit AS möglich.