„MySQL UNION“ - užpildykite mokymo programą

Turinys

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

Įdomios straipsniai...