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 |