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

MySQL UNIONMySQL UNION

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.

Union-Distinkt

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.

Union-All

Varför använda fackföreningar?

Anta att det finns ett fel i din databasdesign och att du använder två olika tabeller avsedda för samma ändamål. Du vill konsolidera dessa två tabeller till en samtidigt som du utelämnar dubbletter från att krypa 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

Dagligt Guru99-nyhetsbrev

Kickstarta dagen med de senaste och viktigaste AI-nyheterna som levereras just nu.