MySQL UNION - Komplett opplæring

Anonim

Hva er en fagforening?

Fagforeninger kombinerer resultatene fra flere SELECT-spørsmål i et samlet resultatsett.

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

Anta at vi har to tabeller som følger

La oss nå lage et UNION-spørsmål for å kombinere begge tabellene ved hjelp av DISTINCT

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

Her fjernes dupliserte rader, og bare unike rader returneres.

Merk: MySQL bruker DISTINCT-setningen som standard når du utfører UNION-spørsmål hvis ingenting er spesifisert.

La oss nå lage et UNION-spørsmål for å kombinere begge tabellene ved hjelp av ALL

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

Her er dupliserte rader inkludert, og siden vi bruker ALLE.

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 vil konsolidere disse to tabellene i en mens du utelater duplikatposter fra å krype inn i den nye tabellen. Du kan bruke UNION i slike tilfeller.

Sammendrag

  • UNION-kommandoen brukes til å kombinere mer enn ett SELECT-søkeresultat i et enkelt spørsmål som inneholder rader fra alle valgte spørsmål.
  • Antall kolonner og datatyper i SELECT-setningene må være det samme for at UNION-kommandoen skal fungere.
  • DISTINCT-leddet brukes til å eliminere dupliserte verdier fra UNION-resultatsettet. MySQL bruker DISTINCT-setningen som standard når du utfører UNION-spørsmål 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 myFlixDB kan vi kombinere

medlemsnummer og fullnavn fra medlemstabellen

med

movie_id og tittel fra filmtabellen

Vi kan bruke følgende spørsmål

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

Å utføre 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