MySQL UNION - Vollständiges Tutorial

Anonim

Was ist eine Gewerkschaft?

Gewerkschaften kombinieren die Ergebnisse mehrerer SELECT-Abfragen zu einer konsolidierten Ergebnismenge.

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

Angenommen, wir haben zwei Tabellen wie folgt

Erstellen wir nun eine UNION-Abfrage, um beide Tabellen mit DISTINCT zu kombinieren

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

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

Hinweis: MySQL verwendet standardmäßig die DISTINCT-Klausel, wenn UNION-Abfragen ausgeführt werden, wenn nichts angegeben ist.

Erstellen wir nun eine UNION-Abfrage, um beide Tabellen mit ALL zu kombinieren

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

Hier sind doppelte Zeilen enthalten und da wir ALL verwenden.

Warum Gewerkschaften benutzen?

Angenommen, Ihr Datenbankdesign weist einen Fehler auf und Sie verwenden zwei verschiedene Tabellen, die für denselben Zweck bestimmt sind. Sie möchten diese beiden Tabellen in einer zusammenfassen, ohne doppelte Datensätze in die neue Tabelle einzuschleichen. In solchen Fällen können Sie UNION verwenden.

Zusammenfassung

  • Der UNION-Befehl wird verwendet, um mehr als ein SELECT-Abfrageergebnis zu einer einzigen Abfrage zu kombinieren, die Zeilen aus allen ausgewählten Abfragen enthält.
  • Die Anzahl der Spalten und Datentypen in den SELECT-Anweisungen muss gleich 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 geraden Zeilen in der UNION-Abfrage zurückzugeben.

Praktische Beispiele mit der MySQL Workbench

In unserer myFlixDB können wir kombinieren

Membership_Number und Full_Names aus der Members-Tabelle

mit

movie_id und Titel aus der Filmtabelle

Wir können die folgende Abfrage verwenden

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

Wenn Sie das obige Skript in der MySQL-Workbench für die myflixdb ausführen, erhalten Sie die folgenden 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