MySQL UNION – Komplett handledning
Vad är en union?
Fackföreningar kombinerar resultaten från flera SELECT-frågor till en konsoliderad resultatuppsättning.
De enda kraven för att detta ska fungera är att antalet kolumner ska vara detsamma från alla SELECT-frågor som behöver kombineras.
Anta att vi har två tabeller enligt följande
Låt oss nu skapa en UNION-fråga för att kombinera båda tabellerna med DISTINCT
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Här tas duplicerade rader bort och endast unika rader returneras.
Obs: MySQL använder DISTINCT-satsen som standard vid exekvering av UNION-frågor om inget anges.
Låt oss nu skapa en UNION-fråga för att kombinera båda tabellerna med ALL
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Här ingår dubbletter av rader och eftersom vi använder ALLA.
Varför använda fackföreningar?
Anta att det finns ett fel i din databasdesign och du använder två olika tabeller avsedda för samma ändamål. Du vill slå samman dessa två tabeller till en samtidigt som du utesluter eventuella dubbletter från cree.ping in i den nya tabellen. Du kan använda UNION i sådana fall.
Sammanfattning
- UNION-kommandot används för att kombinera mer än ett SELECT-frågeresultat till en enda sökning som innehåller rader från alla SELECT-frågor.
- Antalet kolumner och datatyper i SELECT-satser måste vara detsamma för att UNION-kommandot ska fungera.
- DISTINCT-satsen används för att eliminera dubbletter av värden från UNION-frågeresultatuppsättningen. MySQL använder DISTINCT-satsen som standard vid exekvering av UNION-frågor om inget anges.
- ALL-satsen används för att returnera alla även dubblettraderna i UNION-frågan.
Praktiska exempel med hjälp av MySQL arbetsbänk
I vår myFlixDB låter vi kombinera
medlemsnummer och fullständiga namn från tabellen Medlemmar
med
movie_id och titel från filmtabellen
Vi kan använda följande fråga
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Exekvera skriptet ovan i MySQL arbetsbänk mot myflixdb ger oss följande resultat som visas nedan.
| 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 |




