mysql union comprehensive tutorial with union examples
Denne opplæringen forklarer MySQL UNION-kommandoen, dens typer, Union vs Union All, og eksempler for å kombinere data fra to eller flere spørsmål:
MySQL UNION brukes til å kombinere resultater fra flere SELECT-spørsmål i ett resultatsett. Det er også mulig å ha alle de komplekse spørringene / operasjonene i SELECT-spørringene og utføre UNION med andre SELECT-setninger for å gi et kombinert resultat.
hvordan du lager en rekke objekter i java
Standardkarakteristikken til en UNION-setning er å fjerne dupliserte oppføringer eller rader fra det resulterende settet med rader, men det gir imidlertid måter å hente duplikatoppføringene også ved å bruke UNION ALL-setningen.
Hva du vil lære:
- Forstå UNION gjennom settteori
- Hvilket problem løser MySQL UNION
- MySQL UNION Vs UNION ALL
- Konklusjon
Forstå UNION gjennom settteori
UNION-operasjon kunne forstås veldig godt ut fra prinsippene i SET Theory.
Anta at vi har tabellene A & B som representert av settene nedenfor, og at de har noen overlappende data (eller det kan også være helt uten tilknytning) - UNION vil inkludere kombinasjonen av data fra begge tabellene.
La oss se et eksempel der sett A & B har noen vanlige elementer. UNION vil inneholde alle verdiene fra sett A & B med duplikatverdiene utelatt.
Nå, hva om sett A & B er usammenhengende og ikke inneholder noen vanlige elementer? Også her vil UNIONEN returnere det samme resultatet.
La oss diskutere scenariet der det er overlappende elementer mellom settene, og vi vil at duplikatverdiene også skal vises i resultatsettet.
MySQL gir en måte å gjøre det ved å bruke alternativet UNION ALL som vist på bildet nedenfor.
Hvilket problem løser MySQL UNION
MySQL UNION brukes når du har lignende data over to eller flere tabeller, og du vil se en kombinert visning av dataene i begge tabellene i stedet for å kjøre SELECT-setninger for individuelle tabeller.
For eksempel - Anta at det er to bord - Ansatt og Student. Og du jobber med en persondatabase som bare vil ha navn, alder og fødselsdato for alle ansatte og studenter.
Uten UNION, må du utføre separate SELECT-spørsmål for begge tabellene og deretter utføre ønsket beregning med det oppnådde resultatsettet.
MySQL UNION-syntaks
Spørringene nedenfor vil returnere en UNION på 2 eller mer enn 2 SELECT-utsagn.
SELECT {column1}, {column2} FROM {table1} UNION [ALL | DISTINCT] SELECT {column3}, {column4} FROM {table2} UNION [ALL | DISTINCT] SELECT ...
La oss prøve å se forskjellige komponenter i syntaksen
- Vi kan se at det er mulig å kombinere flere SELECT-spørsmål med UNION for å få det resulterende radsettet.
- Kolonnenavn og datatyper: Det er viktig å forstå at kolonnene vi ønsker å kombinere skal ha samme eller kompatible datatype. For eksempel: hvis du har kolonne1 som STRING, bør kolonne3 også være STRING (eller STRING-kompatibel).
- Kolonnenavnene og posisjonene bestemmes fra den første SELECT-setningen i UNION-spørringen. For eksempel i syntaksen ovenfor: kolonne1 og kolonne2 er navngitt som overskriftskolonner i resultatsettet, og verdiene til kolonne3 og kolonne4 er tilordnet henholdsvis kolonne1 og kolonne2.
- Resultatene av et UNION-spørsmål fjerner som standard dupliserte oppføringer. For eksempel, i dette tilfellet, hvis det er en duplikatoppføring som har nøyaktig samsvar og har de samme verdiene for kolonne1 og kolonne2, vil disse radene utelates fra resultatsettet.
Hvis du ønsker duplikater, kan vi bruke alternativet ‘ALL’ sammen med UNION.
Bruken av TYDELIG er underforstått som standard. Vær oppmerksom på at det også kan spesifiseres eksplisitt å ha mer lesbarhet.
La oss se et eksempel på et UNION-spørsmål.
Anta at det er to bord - ansatt og student - som hver har personlig informasjon.
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Skriv inn noen dummy-data i begge disse tabellene som vist nedenfor:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
Som du kan se ovenfor, har vi med vilje lagt til en rad som har de samme attributtene for navn, alder og fødselsdato.
La oss nå se hvordan vi kan kombinere dataene i disse to tabellene ved hjelp av UNION-kommandoer. Vi vil spørre brukernavn og alder fra begge tabellene.
Enkel UNION
Spørsmål:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
Du vil se 9 poster i resultatet (som betyr at spørringen ovenfor har utelatt duplikatoppføringen).
Produksjon:
Navn | alder |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | tjue |
Akash | 22 |
Shirley | 19 |
Joana | tjueen |
UNION Med UNION ALL
Å bruke UNION med ALL-ledd vil sikre at duplikatoppføringene også vises.
Spørsmål:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Produksjon:
Navn | alder |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | tjue |
Akash | 22 |
Shirley | 19 |
Joana | tjueen |
Kartik | tjue |
UNION Med tilstand
La oss legge til betingelser i SELECT-utsagnene der vi ønsker data om ansatte under 30 år og studenter under 25 år.
Spørsmål:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Produksjon:
Navn | alder |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | tjue |
Akash | 22 |
Shirley | 19 |
Joana | tjueen |
Som du kan se ovenfor, inkluderer resultatsettet det kombinerte resultatet med individuelle SELECT-betingelser validert.
Bestilling av UNION-resultater
Resultatene av et UNION-spørsmål er ikke ordnet som standard.
For å pålegge en bestilling av en kolonne som finnes i det resulterende settet, kan en ORDER BY-ledd spesifiseres på slutten av UNION-kommandoen.
La oss bruke de samme ansatte / studentdataene og bestille UNION-resultatene i stigende rekkefølge etter alder.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Produksjon:
Navn | alder |
---|---|
Shirley | 19 |
Kartik | tjue |
Joana | tjueen |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Ovennevnte resultatsett er sortert etter aldersverdier i økende rekkefølge. Vi kan også bruke kolonnealiaser for å referere til kolonnene i ORDER BY-klausulen.
For eksempel: - Et spørsmål som nedenfor vil også gi det samme resultatet.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Det er en annen måte å bruke ORDER BY-setningen ved å bare nevne kolonneposisjonen i stedet for kolonnenavnet.
For eksempel: I ovennevnte UNION-spørring velger vi navn og alder som innebærer at disse kolonnene er på henholdsvis posisjon 1 og 2.
Så for å BESTILLE PÅ alder, kan vi bare spesifisere posisjonen i stedet for det faktiske kolonnenavnet.
Derfor vil spørringen nedenfor også gi det samme resultatet.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION Vs UNION ALL
MySQL gir to varianter av UNION, dvs. UNION DISTINCT og UNION ALL
Vær oppmerksom på at DISTINCT er underforstått som standard, selv om det ikke er oppgitt.
Den største forskjellen mellom dem begge er at UNION ALL tillater å kombinere og returnere dupliserte rader også, mens UNION bare returnerer de kombinerte radene og fjerne duplikater.
Tabellen nedenfor forklarer detaljene:
Parameter | UNION | UNION ALL |
---|---|---|
Definisjon | Tilsvarer UNION DISTINCT - ignorerer dupliserte rader med data mens resultatet returneres | Returnerer alle radene inkludert duplikater |
Syntaks | VELG {columnList} FRA {table1} UNION VELG {columnList} FRA {table2} | VELG {columnList} FRA {table1} UNION ALL VELG {columnList} FRA {table2} |
Datakrav | Data som kombineres skal ha lignende datatyper og skal hentes i samme rekkefølge når de hentes fra flere tabeller | Samme som UNION |
ofte stilte spørsmål
Q # 1) Er Union raskere enn JOIN?
Svar: UNION og JOINs brukes til praktisk talt 2 forskjellige formål.
Teknisk sett er UNION langt raskere enn JOIN (spesielt for store datasett) ettersom UNION bare sammenkoker rader med data fra de enkelte SELECT-setningene.
Spørsmål 2) Hva er UNION ALL-operatøren?
Svar: I likhet med UNION returnerer UNION ALL-operatøren også UNION mellom to SELECT-spørsmål, men forskjellen er at den også inneholder dupliserte rader / oppføringer.
Q # 3) Hva er forskjellen mellom UNION og JOIN?
Svar: Både UNION og JOIN brukes til å kombinere data fra to eller flere tabeller. Men det er stor forskjell når det gjelder resultatsettet og måten data hentes på.
Likheter og forskjeller mellom JOIN og UNION er oppført i tabellen nedenfor:
UNION | BLI MED |
---|---|
Kombinerer data fra flere tabeller | Kombinerer data fra flere tabeller |
Krever ingen spesifikke betingelser for å samle eller kombinere data | JOIN fungerer på en JOIN-betingelse som kreves for å validere data som kommer i resultatsett |
Data fra forskjellige tabeller blir tatt som forskjellige rader i resultatsettet | Data fra forskjellige tabeller kombineres i en enkelt rad - for eksempel kan en rad i resultatsettet inneholde 2 kolonner fra tabell 1, 3 kolonner fra tabell 2 osv. Avhengig av JOIN-tilstanden og VELG spørringen |
UNIONer er enkle og greie | JOINS krever komplekse forhold, og avhengig av behov kan flere typer koblinger som INNER / OUTER etc brukes. |
Konklusjon
I denne veiledningen har vi lært om bruk av MySQL UNION til å kombinere data fra 2 eller flere SELECT-setninger.
UNION-uttalelsen er veldig nyttig for å samle lignende data fra store sett med forskjellige tabeller og deretter kjøre en analyse på de kombinerte dataene.
UNION-kommandoen støtter også en ALL-ledd som også muliggjør henting av duplikatposter.
Anbefalt lesing
- Hva er MySQL og hvorfor brukes det?
- Forskjellen mellom SQL Vs MySQL Vs SQL Server (med eksempler)
- Indre sammenføyning mot ytre sammenføyning: nøyaktig forskjell på eksempler
- MySQL JOIN Opplæring: indre, ytre, kryss, venstre, høyre og selv
- MySQL Lag visningsveiledning med kodeeksempler
- MySQL Lag tabellveiledning med eksempler
- MySQL Update Statement Tutorial - Update Query Syntax & Eksempler
- Topp 40 beste MySQL intervjuspørsmål og svar (2021 spørsmål)