UNION un UNION ALL ir divi vissvarīgākie SQL operatori, kas tiek izmantoti datu bāzē, lai apvienotu rezultātu kopu no vairākām tabulām. Šie operatori ļauj izmantot vairākus SELECT vaicājumus, izgūt vēlamos rezultātus un pēc tam apvienot tos galīgajā izvadē. . Šajā rakstā mēs redzēsim, kā tie atšķiras viens no otra. Pirms salīdzināšanas mēs īsi apspriedīsimies par šiem operatoriem.
Kas ir Savienības operators?
Union operators MySQL ļauj mums apvienot divus vai vairākus rezultātus no vairākiem SELECT vaicājumiem vienā rezultātu kopā. Tam ir noklusējuma funkcija noņemiet dublētās rindas no galdiem. Šī operatora sintakse vienmēr izmanto kolonnas nosaukumu pirmajā SELECT priekšrakstā kā izvades kolonnu nosaukumus.
MySQL Savienībai ir jāievēro šādi pamatnoteikumi:
- Kolonnu skaitam un secībai visos vaicājumos jābūt vienādam.
- Katra atlases vaicājuma atbilstošajai kolonnu pozīcijai ir jābūt saderīgam datu tipam.
- Dažādos SELECT vaicājumos atlasītajam kolonnas nosaukumam ir jābūt vienā secībā.
- Pirmā SELECT vaicājuma kolonnas nosaukums būs izvades kolonnu nosaukumi.
PIEZĪME. Mums ir jāzina, ka Savienība un Join atšķiras.
- JOIN apvieno datus no vairākām dažādām tabulām, savukārt UNION apvieno datus no vairākām līdzīgām tabulām.
- JOIN izvadi pievieno horizontāli, savukārt UNION rezultātu kopu apvieno vertikāli.
Tālāk redzamais vizuālais attēlojums to izskaidro skaidrāk:
Lai uzzinātu vairāk par Savienības operatoru, noklikšķiniet šeit .
Kas ir Union All?
Operators UNION ALL apvieno divus vai vairākus rezultātus no vairākiem SELECT vaicājumiem un atgriež visus ierakstus vienā rezultātu kopā. Tas nenoņem dublētās rindas no SELECT priekšrakstu izvades.
Mēs to varam saprast ar šādu vizuālo attēlojumu.
Union vs Union All Operator
Šajā salīdzināšanas tabulā ir ātri izskaidrotas to galvenās atšķirības:
SAVIENĪBA | SAVIENĪBA VISU |
---|---|
Tas apvieno rezultātu kopu no vairākām tabulām un atgriež atšķirīgus ierakstus vienā rezultātu komplektā. | Tas apvieno rezultātu kopu no vairākām tabulām un atgriež visus ierakstus vienā rezultātu komplektā. |
Tālāk ir sniegts pamats sintakse no UNION operatora: ATLASĪT kolonnu_saraksts NO tabulas1 SAVIENĪBA SELECT column_list FROM table2; | Tālāk ir sniegts pamats sintakse no UNION ALL operatora: ATLASĪT kolonnu_saraksts NO tabulas1 SAVIENĪBA VISU SELECT column_list FROM table2; |
Tam ir noklusējuma funkcija, lai no izvades izņemtu dublētās rindas. | Tam nav iespējas no izvades izņemt dublētās rindas. |
Tās sniegums ir lēns jo ir nepieciešams laiks, lai atrastu un pēc tam noņemtu dublētus ierakstus. | Tās sniegums ir ātrs jo tas nenovērš dublētās rindas. |
Lielākā daļa datu bāzes lietotāju izvēlas izmantot šo operatoru. | Lielākā daļa datu bāzes lietotāju nevēlas izmantot šo operatoru. |
Union un Union All Piemērs
Ļaujiet mums saprast atšķirības starp Union un Union All operatoriem, izmantojot piemēru. Pieņemsim, ka mums ir tabula ar nosaukumu ' Students ' un ' Students2 ', kas satur šādus datus:
Tabula: Students
Tabula: Student2
Pēc SQL priekšraksta atgriež atšķirīgs pilsētu nosaukums no abām tabulām, izmantojot vaicājumu UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Pēc iepriekš minētā paziņojuma izpildes mēs iegūsim tālāk norādīto izvadi, jo Savienības operators atgriež tikai atšķirīgās vērtības.
Pēc SQL priekšraksta atgriežas visu pilsētu nosaukumi, ieskaitot dublikātus no abām tabulām, izmantojot vaicājumu UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Pēc iepriekš minētā paziņojuma izpildes mēs iegūsim tālāk norādīto izvadi, jo operators Union All atgriež veselus ierakstus, neizslēdzot atšķirīgas vērtības.