MySQL UNION - Pilnīga apmācība

Anonim

Kas ir savienība?

Arodbiedrības apvieno vairāku SELECT vaicājumu rezultātus apvienotā rezultātu kopā.

Vienīgās prasības, lai tas darbotos, ir tas, ka kolonnu skaitam jābūt vienādam no visiem SELECT vaicājumiem, kuri jāapvieno.

Pieņemsim, ka mums ir divas tabulas šādi

Tagad izveidosim UNION vaicājumu, kas apvieno abas tabulas, izmantojot DISTINCT

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

Šeit tiek noņemtas rindu dublikāti un tiek atgrieztas tikai unikālās rindas.

Piezīme: MySQL izmanto klauzulu DISTINCT kā noklusējumu, izpildot UNION vaicājumus, ja nekas nav norādīts.

Tagad izveidosim UNION vaicājumu, lai abas tabulas apvienotu, izmantojot ALL

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

Šeit ir iekļautas dublikātu rindas, un tā kā mēs izmantojam VISU.

Kāpēc izmantot arodbiedrības

Pieņemsim, ka jūsu datu bāzes dizainā ir trūkums, un jūs izmantojat divas dažādas tabulas, kas domātas vienam un tam pašam mērķim. Jūs vēlaties apvienot šīs divas tabulas vienā, vienlaikus izlaižot dublikātu dublikātus no jaunās tabulas. Šādos gadījumos varat izmantot UNION.

Kopsavilkums

  • Komanda UNION tiek izmantota, lai vairākos SELECT vaicājuma rezultātus apvienotu vienā vaicājumā, kurā ir rindas no visiem atlasītajiem vaicājumiem.
  • Kolonnu un datu tipu skaitam SELECT priekšrakstos jābūt vienādam, lai komanda UNION darbotos.
  • Klauzula DISTINCT tiek izmantota, lai izslēgtu vērtību dublikātus no UNION vaicājuma rezultātu kopas. Ja nekas nav norādīts, MySQL izmanto klauzulu DISTINCT kā noklusējumu, izpildot UNION vaicājumus.
  • Klauzula ALL tiek izmantota, lai atgrieztu visas pat dublikātu rindas vaicājumā UNION.

Praktiski piemēri, izmantojot MySQL darbagaldu

Mūsu myFlixDB ļauj apvienot

Dalības_numurs un pilni_vārdi no Dalībnieku tabulas

ar

movie_id un nosaukums no filmu tabulas

Mēs varam izmantot šādu vaicājumu

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

Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret myflixdb dod mums šādus rezultātus, kas parādīti zemāk.

 
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