Kas yra sąjunga?
Profesinės sąjungos sujungia kelių SELECT užklausų rezultatus į konsoliduotą rezultatų rinkinį.
Vieninteliai reikalavimai, kad tai veiktų, yra tai, kad stulpelių skaičius turėtų būti vienodas iš visų SELECT užklausų, kurias reikia sujungti.
Tarkime, kad turime dvi lenteles taip
Dabar sukurkime UNION užklausą, kad abi lentelės būtų sujungtos naudojant DISTINCT
SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;
Čia pasikartojančios eilutės pašalinamos ir grąžinamos tik unikalios eilutės.
Pastaba: vykdant UNION užklausas, jei nieko nenurodyta, „MySQL“ naudoja numatytąją sąlygą DISTINCT.
Dabar sukurkime UNION užklausą, kad abi lentelės būtų sujungtos naudojant ALL
SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;
Čia pateikiamos pasikartojančios eilutės ir kadangi mes naudojame VISAS.
Kodėl verta naudotis sąjungomis
Tarkime, kad jūsų duomenų bazės dizaine yra trūkumų ir jūs naudojate dvi skirtingas lenteles, skirtas tam pačiam tikslui. Šias dvi lenteles norite sujungti į vieną, kartu praleidžiant bet kokius pasikartojančius įrašus į naująją lentelę. Tokiais atvejais galite naudoti UNION.
Santrauka
- Komanda UNION naudojama sujungti daugiau nei vieną SELECT užklausos rezultatą į vieną užklausą, kurioje yra eilučių iš visų pasirinktų užklausų.
- Stulpelių skaičius ir duomenų tipai SELECT sakiniuose turi būti vienodi, kad komanda UNION veiktų.
- Sąlyga DISTINCT naudojama norint pašalinti pasikartojančias reikšmes iš UNION užklausos rezultatų rinkinio. Jei nieko nenurodyta, „MySQL“ naudoja sąlygą DISTINCT kaip numatytąją vykdant UNION užklausas.
- Sąlyga ALL naudojama norint grąžinti visas UNION užklausos kopijas.
Praktiniai pavyzdžiai naudojant „MySQL“ darbastalį
Mūsų „myFlixDB“ leidžia sujungti
narystės_ numeris ir visi vardai iš narių lentelės
su
movie_id ir pavadinimas iš filmų lentelės
Mes galime naudoti šią užklausą
SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;
Minėto scenarijaus vykdymas „MySQL“ darbastalyje prieš „myflixdb“ suteikia mums šiuos rezultatus.
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 |