MySQL UNION – Vollständiges Tutorial

Was ist eine Union?

Unions kombinieren die Ergebnisse mehrerer SELECT-Abfragen zu einem konsolidierten Ergebnissatz.

Die einzige Voraussetzung dafür, dass dies funktioniert, ist, dass die Anzahl der Spalten aller SELECT-Abfragen, die kombiniert werden müssen, gleich ist.

Angenommen, wir haben zwei Tabellen wie folgt

MySQL UNIONMySQL UNION

Lassen Sie uns nun eine UNION-Abfrage erstellen, um beide Tabellen mithilfe von DISTINCT zu kombinieren

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

Hier werden doppelte Zeilen entfernt und nur eindeutige Zeilen zurückgegeben.

Union-Distinct

Hinweis: MySQL Verwendet die DISTINCT-Klausel als Standard beim Ausführen von UNION-Abfragen, wenn nichts angegeben ist.

Lassen Sie uns nun eine UNION-Abfrage erstellen, um beide Tabellen mit ALL zu kombinieren

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

Hier sind doppelte Zeilen enthalten und da wir ALL verwenden.

Union-All

Warum Gewerkschaften verwenden?

Angenommen, Ihr Datenbankdesign weist einen Fehler auf und Sie verwenden zwei verschiedene Tabellen für denselben Zweck. Sie möchten diese beiden Tabellen zu einer konsolidieren und gleichzeitig verhindern, dass sich doppelte Datensätze in die neue Tabelle einschleichen. In solchen Fällen können Sie UNION verwenden.

Zusammenfassung

  • Der UNION-Befehl wird verwendet, um mehr als eine SELECT-Abfrageergebnisse in einer einzigen Abfrage zu kombinieren, die Zeilen aus allen Auswahlabfragen enthält.
  • Die Anzahl der Spalten und Datentypen im SELECT-Anweisungen müssen identisch sein, damit der UNION-Befehl funktioniert.
  • Die DISTINCT-Klausel wird verwendet, um doppelte Werte aus der UNION-Abfrageergebnismenge zu entfernen. MySQL verwendet die DISTINCT-Klausel als Standard beim Ausführen von UNION-Abfragen, wenn nichts angegeben ist.
  • Die ALL-Klausel wird verwendet, um alle doppelten Zeilen in der UNION-Abfrage zurückzugeben.

Praktische Beispiele mit MySQL Werkbank

In unserer myFlixDB können wir kombinieren

Mitgliedschaftsnummer und vollständige_Namen aus der Mitgliedertabelle

mit

movie_id und Titel aus der Filmtabelle

Wir können die folgende Abfrage verwenden

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

Ausführen des obigen Skripts in MySQL Werkbank gegen myflixdb liefert uns die unten dargestellten Ergebnisse.

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men