MySQL UNION - Volledige zelfstudie

Anonim

Wat is een vakbond?

Vakbonden combineren de resultaten van meerdere SELECT-queries tot een geconsolideerde resultatenset.

De enige vereiste om dit te laten werken, is dat het aantal kolommen hetzelfde moet zijn voor alle SELECT-query's die moeten worden gecombineerd.

Stel dat we als volgt twee tabellen hebben

Laten we nu een UNION-query maken om beide tabellen te combineren met DISTINCT

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

Hier worden dubbele rijen verwijderd en worden alleen unieke rijen geretourneerd.

Opmerking: MySQL gebruikt de DISTINCT-clausule als standaard bij het uitvoeren van UNION-query's als er niets is opgegeven.

Laten we nu een UNION-query maken om beide tabellen te combineren met ALL

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

Hier zijn dubbele rijen opgenomen en aangezien we ALL gebruiken.

Waarom vakbonden gebruiken

Stel dat er een fout zit in het ontwerp van uw database en u gebruikt twee verschillende tabellen die voor hetzelfde doel zijn bedoeld. U wilt deze twee tabellen samenvoegen tot één terwijl u geen dubbele records in de nieuwe tabel wilt laten kruipen. In dergelijke gevallen kunt u UNION gebruiken.

Overzicht

  • De UNION-opdracht wordt gebruikt om meer dan één SELECT-queryresultaten te combineren in een enkele query die rijen bevat van alle geselecteerde query's.
  • Het aantal kolommen en gegevenstypen in de SELECT-instructies moet hetzelfde zijn om de UNION-opdracht te laten werken.
  • De DISTINCT-clausule wordt gebruikt om dubbele waarden uit de UNION-queryresultatenset te verwijderen. MySQL gebruikt de DISTINCT-clausule als standaard bij het uitvoeren van UNION-query's als er niets is opgegeven.
  • De ALL-clausule wordt gebruikt om alle, zelfs de dubbele rijen in de UNION-query te retourneren.

Praktische voorbeelden met MySQL-workbench

In onze myFlixDB laten we combineren

lidmaatschapsnummer en volledige namen uit de tabel Leden

met

movie_id en titel uit de filmtabel

We kunnen de volgende vraag gebruiken

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

Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de volgende resultaten die hieronder worden weergegeven.

 
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