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 |