mysql union comprehensive tutorial with union examples
Denna handledning förklarar kommandot MySQL UNION, dess typer, Union vs Union All och exempel för att kombinera data från två eller fler frågor:
MySQL UNION används för att kombinera resultat från flera SELECT-frågor till en enda resultatuppsättning. Det är också möjligt att ha alla komplexa frågor / operationer i SELECT-frågorna och utföra UNION med andra SELECT-uttalanden för att ge ett kombinerat resultat.
bästa gratis YouTube till mp3-nedladdare
Standardkaraktäristiken för ett UNION-uttalande är att ta bort dubblettposter eller rader från den resulterande uppsättningen rader, men det ger också sätt att hämta duplikatposterna också med UNION ALL-klausulen.
Vad du kommer att lära dig:
Förstå UNION genom setteori
UNION: s verksamhet kan förstås mycket väl från principerna i SET Theory.
Antag att vi har tabellerna A & B som representeras av uppsättningarna nedan och att de har en del överlappande data (eller så kan det också vara helt orelaterat) - UNION kommer att inkludera kombinationen av data från båda tabellerna.
Låt oss se ett exempel där uppsättningar A & B har några vanliga element. UNIONEN kommer att innehålla alla värden från uppsättning A & B med dubbla värden utelämnade.
Tänk nu om uppsättningar A & B inte är separata och inte innehåller några vanliga element? Även här kommer UNION att returnera samma resultat.
Låt oss diskutera scenariot där det finns överlappande element mellan uppsättningar och vi vill att de dubbla värdena också ska visas i resultatuppsättningen.
MySQL ger ett sätt att göra det med alternativet UNION ALL som visas i bilden nedan.
Vilket problem löser MySQL UNION
MySQL UNION används när du har liknande data i två eller flera tabeller och du vill se en kombinerad vy av data som finns i båda tabellerna snarare än att köra SELECT-satser för enskilda tabeller.
Till exempel - Antag att det finns två bord - Anställd och Studerande. Och du arbetar med en persondatabas som bara vill ha ett namn, ålder och födelsedatum för alla anställda och studenter.
Utan UNION måste du utföra separata SELECT-frågor för båda tabellerna och sedan utföra önskad beräkning med den erhållna resultatuppsättningen.
MySQL UNION-syntax
Nedanstående frågor returnerar en UNION med 2 eller fler än 2 SELECT-uttalanden.
SELECT {column1}, {column2} FROM {table1} UNION (ALL | DISTINCT) SELECT {column3}, {column4} FROM {table2} UNION (ALL | DISTINCT) SELECT ...
Låt oss försöka se olika komponenter i syntaxen
- Vi kan se att det är möjligt att kombinera flera SELECT-frågor med UNION för att få den resulterande raduppsättningen.
- Kolumnnamn och datatyper: Det är viktigt att förstå att kolumnerna som vi vill kombinera ska ha samma eller kompatibla datatyp. Till exempel: om du har kolumn 1 som STRING, ska kolumn 3 också vara STRING (eller STRING-kompatibel).
- Kolumnnamnen och positionerna bestäms från det första SELECT-uttalandet i UNION-frågan. Till exempel i ovanstående syntax: kolumn1 och kolumn2 namnges som rubrikkolumner i resultatuppsättningen och värdena för kolumn3 och kolumn4 mappas till kolumn1 respektive kolumn2.
- Resultaten av en UNION-fråga tar som standard bort dubbla poster. Till exempel, i det här fallet, om det finns en dubblettpost som har en exakt matchning och har samma värden för kolumn1 och kolumn2, kommer dessa rader att utelämnas från resultatuppsättningen.
Om dubbletter önskas kan vi använda alternativet ”ALL” tillsammans med UNIONEN.
Användningen av DISTINKT antyds som standard. Observera att det också skulle kunna anges specifikt att ha mer läsbarhet.
Låt oss se ett exempel på en UNION-fråga.
Antag att det finns två tabeller - anställd och student - som alla har personlig information.
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));
Ange nu dummydata i båda dessa tabeller enligt nedan:
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 ovan har vi medvetet lagt till en rad som har samma attribut för namn, ålder och födelsedatum.
Låt oss nu se hur vi kan kombinera data i dessa två tabeller med UNION-kommandon. Vi kommer att fråga användarnamn och ålder från båda tabellerna.
Enkel UNION
Fråga:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
Du kommer att se nio poster i resultatet (vilket innebär att ovanstående fråga har utelämnat den dubbla posten).
Produktion:
namn | ålder |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | tjugo |
Akash | 22 |
Shirley | 19 |
Joana | tjugoett |
UNION Med UNION ALL
Att använda UNION med ALL-klausulen säkerställer att de dubbla posterna också visas.
Fråga:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Produktion:
namn | ålder |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | tjugo |
Akash | 22 |
Shirley | 19 |
Joana | tjugoett |
Kartik | tjugo |
UNION Med tillstånd
Låt oss lägga till villkor i SELECT-uttalandena där vi vill ha uppgifter om anställda under 30 år och studenter under 25 år.
Fråga:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Produktion:
namn | ålder |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | tjugo |
Akash | 22 |
Shirley | 19 |
Joana | tjugoett |
Som du kan se ovan inkluderar resultatuppsättningen det kombinerade resultatet med individuella SELECT-villkor validerade.
Beställa UNION-resultat
Resultaten av en UNION-fråga är ordnade som standard.
För att införa en beställning med en kolumn som finns i den resulterande uppsättningen kan en ORDER BY-sats anges i slutet av UNION-kommandot.
Låt oss använda samma uppgifter om anställda / studenter och ordna UNION: s resultat i stigande ordning efter ålder.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Produktion:
namn | ålder |
---|---|
Shirley | 19 |
Kartik | tjugo |
Joana | tjugoett |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Ovanstående resultatuppsättning ordnas efter åldersvärden i ökande ordning. Vi kan också använda kolumnalias för att hänvisa till kolumnerna i ORDER BY-klausulen.
Till exempel: - En fråga som nedan ger också samma resultat.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Det finns ett annat sätt att använda ORDER BY-satsen genom att bara nämna kolumnpositionen istället för kolumnnamnet.
Till exempel: I UNION-frågan ovan väljer vi namn och ålder vilket innebär att dessa kolumner ligger på position 1 respektive 2.
Så för att BESTÄLLA PÅ ålder kan vi helt enkelt ange positionen istället för det faktiska kolumnnamnet.
Följaktligen kommer frågan nedan att ge samma resultat också.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION Vs UNION ALL
MySQL tillhandahåller två varianter av UNION, dvs. UNION DISTINCT och UNION ALL
Observera att DISTINCT är underförstått som standard, även om det inte anges.
Den största skillnaden mellan dem båda är UNION ALL tillåter också att kombinera och returnera duplicerade rader, medan UNION bara returnerar de kombinerade raderna och tar bort dubbletter.
Nedanstående tabell förklarar detaljerna:
Parameter | UNION | UNION ALL |
---|---|---|
Definition | Är likvärdigt med UNION DISTINCT - ignorerar dubbla rader med data medan resultatet returneras | Returnerar alla rader inklusive dubbletter |
Syntax | VÄLJ {columnList} FRÅN {table1} UNION VÄLJ {columnList} FRÅN {table2} | VÄLJ {columnList} FRÅN {table1} UNION ALL VÄLJ {columnList} FRÅN {table2} |
Datakrav | Data som kombineras ska ha liknande datatyper och ska hämtas i samma ordning när de hämtas från flera tabeller | Samma som UNION |
Vanliga frågor
F # 1) Är unionen snabbare än JOIN?
Svar: UNION och JOINs används för praktiskt taget två olika ändamål.
Tekniskt sett är UNION mycket snabbare än JOIN (speciellt för stora datamängder) eftersom UNION bara sammanfogar rader med data från de enskilda SELECT-satserna.
F # 2) Vad är UNION ALL-operatören?
Svar: I likhet med UNION returnerar UNION ALL-operatören också UNION mellan två SELECT-frågor, men skillnaden är att den också innehåller de dubbla raderna / posterna.
F # 3) Vad är skillnaden mellan UNION och JOIN?
Svar: Både UNION och JOIN används för att kombinera data från två eller flera tabeller. Men det finns en enorm skillnad i termer av den erhållna resultatuppsättningen och hur data hämtas.
Likheter och skillnader mellan JOIN och UNION listas i nedanstående tabell:
UNION | ANSLUTA SIG |
---|---|
Kombinerar data från flera tabeller | Kombinerar data från flera tabeller |
Kräver inget specifikt villkor för att samla in eller kombinera data | JOIN fungerar på ett JOIN-villkor som krävs för att validera data som kommer i resultatuppsättning |
Data från olika tabeller tas som olika rader i resultatuppsättningen | Data från olika tabeller kombineras i en rad - till exempel kan en rad i resultatuppsättningen innehålla två kolumner från tabell1, 3 kolumner från tabell 2 etc beroende på JOIN-tillståndet och VÄLJ-frågan |
Fackföreningar är enkla och enkla | JOINS kräver komplexa förhållanden och beroende på behov kan flera typer av anslutningar som INNER / OUTER etc användas. |
Slutsats
I den här handledningen har vi lärt oss att använda MySQL UNION för att kombinera data från två eller flera SELECT-uttalanden.
UNION-uttalandet är till stor hjälp för att samla in liknande data från stora uppsättningar av olika tabeller och sedan köra en analys av de kombinerade uppgifterna.
UNION-kommandot stöder också en ALL-klausul som gör det möjligt att hämta duplikatposter också.
Rekommenderad läsning
- Vad är MySQL och varför används det?
- Skillnad mellan SQL Vs MySQL Vs SQL Server (med exempel)
- Inre anslutning mot yttre anslutning: Exakt skillnad med exempel
- MySQL JOIN Handledning: Inre, yttre, kors, vänster, höger och själv
- MySQL Skapa vyhandledning med kodexempel
- MySQL Skapa tabellhandledning med exempel
- MySQL Update Statement Tutorial - Update Query Syntax & Exempel
- Topp 40 bästa MySQL-intervjufrågor och svar (2021 frågor)