MySQL UNION – Komplett opplæring

Hva er en union?

Fagforeninger kombinerer resultatene fra flere SELECT-spørringer til et konsolidert resultatsett.

De eneste kravene for at dette skal fungere er at antallet kolonner skal være det samme fra alle SELECT-spørringene som må kombineres.

Anta at vi har to tabeller som følger

MySQL UNIONMySQL UNION

La oss nå lage en UNION-spørring for å kombinere begge tabellene ved å bruke DISTINCT

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

Her fjernes dupliserte rader og kun unike rader returneres.

Union-Distinkt

OBS: MySQL bruker DISTINCT-leddet som standard når UNION-spørringer utføres hvis ingenting er spesifisert.

La oss nå lage en UNION-spørring for å kombinere begge tabellene ved å bruke ALL

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

Her er dupliserte rader inkludert og siden vi bruker ALLE.

Union-All

Hvorfor bruke fagforeninger?

Anta at det er en feil i databasedesignet ditt og at du bruker to forskjellige tabeller ment for samme formål. Du ønsker å konsolidere disse to tabellene til én mens du utelater eventuelle dupliserte poster fra å krype inn i den nye tabellen. Du kan bruke UNION i slike tilfeller.

Sammendrag

  • UNION-kommandoen brukes til å kombinere mer enn ett SELECT-spørringsresultat til en enkelt spørring som inneholder rader fra alle utvalgsspørringene.
  • Antall kolonner og datatyper i SELECT-utsagn må være den samme for at UNION-kommandoen skal fungere.
  • DISTINCT-leddet brukes til å eliminere dupliserte verdier fra UNION-spørringsresultatsettet. MySQL bruker DISTINCT-leddet som standard når UNION-spørringer utføres hvis ingenting er spesifisert.
  • ALL-leddet brukes til å returnere alle til og med dupliserte rader i UNION-spørringen.

Praktiske eksempler ved bruk av MySQL arbeidsbenk

I vår myFlixDB lar vi kombinere

membership_number og full_names fra Members-tabellen

med

movie_id og tittel fra filmtabellen

Vi kan bruke følgende spørring

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

Utfører skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir oss 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