UNION og UNION ALL er de to vigtigste SQL-operatorer, der bruges i databasen til at kombinere resultatsættet fra flere tabeller. Disse operatører giver os mulighed for at bruge flere SELECT-forespørgsler, hente de ønskede resultater og derefter kombinere dem til et endeligt output . I denne artikel skal vi se, hvordan de er forskellige fra hinanden. Før vi foretager en sammenligning, vil vi kort diskutere disse operatører.
Hvad er en unionsoperatør?
Union-operatør i MySQL giver os mulighed for at kombinere to eller flere resultater fra flere SELECT-forespørgsler til et enkelt resultatsæt. Den har en standardfunktion til fjern de duplikerede rækker fra bordene. Denne operatorsyntaks bruger altid kolonnens navn i den første SELECT-sætning til at være kolonnenavnene på outputtet.
MySQL Unionen skal følge disse grundlæggende regler:
- Antallet og rækkefølgen af kolonnerne skal være det samme i alle forespørgsler.
- Den tilsvarende kolonneposition for hver udvalgte forespørgsel skal have en kompatibel datatype.
- Kolonnenavnet, der er valgt i de forskellige SELECT-forespørgsler, skal være i samme rækkefølge.
- Kolonnenavnet på den første SELECT-forespørgsel vil være kolonnenavnene på outputtet.
BEMÆRK: Vi skal vide, at Union og Join er forskellige.
- JOIN kombinerer data fra flere forskellige tabeller, hvorimod UNION kombinerer data fra flere lignende tabeller.
- JOIN tilføjer output vandret, mens UNION kombinerer resultatet lodret.
Nedenstående visuelle repræsentation forklarer det mere tydeligt:
For at læse mere information om Union-operatøren, klik her.
Hvad er Union All?
UNION ALL-operatoren kombinerer to eller flere resultater fra flere SELECT-forespørgsler og returnerer alle poster i et enkelt resultatsæt. Det fjerner ikke de duplikerede rækker fra outputtet af SELECT-sætningerne.
Vi kan forstå det med følgende visuelle repræsentation.
Union vs. Union All Operatør
Følgende sammenligningstabel forklarer deres vigtigste forskelle på en hurtig måde:
UNION | UNION ALLE |
---|---|
Den kombinerer resultatsættet fra flere tabeller og returnerer forskellige poster i et enkelt resultatsæt. | Den kombinerer resultatsættet fra flere tabeller og returnerer alle poster i et enkelt resultatsæt. |
Følgende er det grundlæggende syntaks af UNION operatør: VÆLG kolonneliste FRA tabel1 UNION VÆLG kolonneliste FRA tabel2; | Følgende er det grundlæggende syntaks af UNION ALL-operatør: VÆLG kolonneliste FRA tabel1 UNION ALLE VÆLG kolonneliste FRA tabel2; |
Den har en standardfunktion til at fjerne de duplikerede rækker fra outputtet. | Den har ingen funktion til at fjerne de duplikerede rækker fra outputtet. |
Dens ydeevnen er langsom fordi det tager tid at finde og derefter fjerne duplikerede poster. | Dens ydeevnen er hurtig fordi det ikke eliminerer de duplikerede rækker. |
De fleste databasebrugere foretrækker at bruge denne operator. | De fleste databasebrugere foretrækker ikke at bruge denne operator. |
Union og Union Alle Eksempel
Lad os forstå forskellene mellem Union og Union Alle operatører gennem et eksempel. Antag, at vi har en tabel ved navn ' Studerende 'og' Elev 2 ', der indeholder følgende data:
Tabel: Elev
Tabel: Elev2
Efter SQL-sætning returnerer særskilt navn på byer fra begge tabeller ved hjælp af UNION-forespørgslen:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Efter at have udført ovenstående erklæring, vil vi få nedenstående output, fordi unionsoperatøren kun returnerer de forskellige værdier.
Følgende SQL-sætning returnerer alle bynavne inklusive dubletter fra begge tabeller ved hjælp af UNION ALL-forespørgslen:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Efter at have udført ovenstående sætning, vil vi få nedenstående output, fordi Union All-operatøren returnerer hele poster uden at eliminere særskilte værdier.