MySQL UNION – Volledige zelfstudie

Wat is een Unie?

Unions combineren de resultaten van meerdere SELECT-query's in 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 de volgende twee tabellen hebben

MySQL UNIONMySQL UNION

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

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

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

Unie-Distinct

Opmerking: MySQL gebruikt standaard de DISTINCT-clausule 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 behulp van ALL

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

Hier zijn dubbele rijen opgenomen en aangezien we ALL.

Unie-Alles

Waarom vakbonden gebruiken?

Stel dat er een fout zit in uw databaseontwerp en u gebruikt twee verschillende tabellen die voor hetzelfde doel zijn bedoeld. U wilt deze twee tabellen samenvoegen tot één tabel, terwijl u voorkomt dat dubbele records in de nieuwe tabel terechtkomen. In dergelijke gevallen kunt u UNION gebruiken.

Samenvatting

  • De opdracht UNION wordt gebruikt om meer dan één SELECT-queryresultaat te combineren in één enkele query die rijen bevat van alle geselecteerde query's.
  • Het aantal kolommen en gegevenstypen in de SELECT-instructies moet hetzelfde zijn om het UNION-commando 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 dubbele rijen in de UNION-query te retourneren.

Praktijkvoorbeelden met behulp van MySQL werkbank

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 query gebruiken

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

Voer het bovenstaande script uit in MySQL werkbank tegen myflixdb geeft ons de volgende resultaten, zoals hieronder 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