MySQL UNION - Komplet vejledning

Anonim

Hvad er en union?

Fagforeninger kombinerer resultaterne fra flere SELECT-forespørgsler i et konsolideret resultatsæt.

De eneste krav for at dette skal fungere er, at antallet af kolonner skal være det samme fra alle de SELECT-forespørgsler, der skal kombineres.

Antag, at vi har to tabeller som følger

Lad os nu oprette en UNION-forespørgsel til at kombinere begge tabeller ved hjælp af DISTINCT

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

Her fjernes dublerede rækker, og kun unikke rækker returneres.

Bemærk: MySQL bruger DISTINCT-klausulen som standard ved udførelse af UNION-forespørgsler, hvis der ikke er angivet noget.

Lad os nu oprette en UNION-forespørgsel til at kombinere begge tabeller ved hjælp af ALL

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

Her inkluderes duplikatrækker, og da vi bruger ALLE.

Hvorfor bruge fagforeninger

Antag, at der er en fejl i dit databasedesign, og du bruger to forskellige tabeller beregnet til det samme formål. Du vil konsolidere disse to tabeller i en, mens du undlader at duplikere poster fra at krybe ind i den nye tabel. Du kan bruge UNION i sådanne tilfælde.

Resumé

  • UNION-kommandoen bruges til at kombinere mere end et SELECT-forespørgselsresultat til en enkelt forespørgsel, der indeholder rækker fra alle de valgte forespørgsler.
  • Antallet af kolonner og datatyper i SELECT-sætningerne skal være det samme, for at UNION-kommandoen kan fungere.
  • DISTINCT-klausulen bruges til at fjerne duplikatværdier fra UNION-forespørgselsresultatsættet. MySQL bruger DISTINCT-klausulen som standard ved udførelse af UNION-forespørgsler, hvis der ikke er angivet noget.
  • AL-klausulen bruges til at returnere alle lige de dobbelte rækker i UNION-forespørgslen.

Praktiske eksempler ved brug af MySQL-arbejdsbænk

I vores myFlixDB kan vi kombinere

medlemsnummer og fulde navne fra medlemstabellen

med

movie_id og titel fra filmtabellen

Vi kan bruge følgende forespørgsel

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

Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os følgende resultater vist nedenfor.

 
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