mysql union comprehensive tutorial with union examples
In deze tutorial worden de MySQL UNION-opdracht, de typen, Union vs Union All en voorbeelden uitgelegd om gegevens van 2 of meer query's te combineren:
MySQL UNION wordt gebruikt om resultaten van meerdere SELECT-queries te combineren tot één resultaatset. Het is ook mogelijk om alle complexe query's / bewerkingen in de SELECT-query's te hebben en UNION uit te voeren met andere SELECT-instructies om een gecombineerd resultaat te krijgen.
fase van analyse van levenscyclus van software
Het standaardkenmerk van een UNION-instructie zou zijn om de dubbele vermeldingen of rijen uit de resulterende reeks rijen te verwijderen, maar het biedt ook manieren om de dubbele records op te halen met behulp van de UNION ALL-clausule.
Wat je leert:
- UNION begrijpen door middel van set-theorie
- Welk probleem lost MySQL UNION op
- MySQL UNION versus UNION ALL
- Gevolgtrekking
UNION begrijpen door middel van set-theorie
De werking van UNION kan heel goed worden begrepen vanuit de principes van SET Theory.
Stel dat we tabellen A en B hebben zoals hieronder weergegeven door sets en ze hebben enkele overlappende gegevens (of het kan ook totaal niet gerelateerd zijn) - UNION zal de combinatie van gegevens uit beide tabellen opnemen.
Laten we een voorbeeld bekijken waarin sets A en B enkele gemeenschappelijke elementen hebben. De UNION bevat alle waarden van set A & B, waarbij de dubbele waarden zijn weggelaten.
Nu, wat als sets A en B onsamenhangend zijn en geen gemeenschappelijke elementen bevatten? Ook hier zal de UNION hetzelfde resultaat retourneren.
Laten we het scenario bespreken waarbij er overlappende elementen tussen sets zijn en we willen dat de dubbele waarden ook in de resultatenset verschijnen.
MySQL biedt een manier om dat te doen met behulp van de optie UNION ALL, zoals weergegeven in de onderstaande afbeelding.
Welk probleem lost MySQL UNION op
MySQL UNION wordt gebruikt wanneer u vergelijkbare gegevens in twee of meer tabellen heeft en u een gecombineerde weergave van de gegevens in beide tabellen wilt zien in plaats van SELECT-instructies voor afzonderlijke tabellen uit te voeren.
Bijvoorbeeld - Stel dat er 2 tafels zijn - Werknemer en Leerling. En u werkt aan een persoonsdatabase die alleen een naam, leeftijd en geboortedatum wil hebben voor alle medewerkers en studenten.
Zonder UNION moet u afzonderlijke SELECT-query's uitvoeren voor beide tabellen en vervolgens de gewenste berekening uitvoeren met de verkregen resultatenset.
MySQL UNION-syntaxis
De onderstaande query's retourneren een UNION van 2 of meer dan 2 SELECT-instructies.
Laten we proberen om verschillende componenten van de syntaxis te zien
- We kunnen zien dat het mogelijk is om meerdere SELECT-query's te combineren met UNION om de resulterende rijenset te krijgen.
- Kolomnaam en gegevenstypen: het is belangrijk om te begrijpen dat de kolommen die we willen combineren, hetzelfde of een compatibel gegevenstype moeten hebben. Bijvoorbeeld: als u kolom1 heeft als STRING, dan moet kolom3 ook STRING zijn (of STRING-compatibel).
- De kolomnamen en posities worden bepaald op basis van de eerste SELECT-instructie in de UNION-query. Bijvoorbeeld in de bovenstaande syntaxis: kolom1 en kolom2 worden genoemd als koptekstkolommen in de resultatenset en de waarden van kolom3 en kolom4 worden toegewezen aan respectievelijk kolom1 en kolom2.
- De resultaten van een UNION-query verwijderen standaard dubbele vermeldingen. Bijvoorbeeld, in dit geval, als er een dubbele invoer is die exact overeenkomt en dezelfde waarden heeft voor kolom1 en kolom2, worden die rijen weggelaten uit de resultaatset.
Als duplicaten gewenst zijn, kunnen we samen met de UNION de optie ‘ALL’ gebruiken.
Het gebruik van DISTINCT wordt standaard geïmpliceerd. Houd er rekening mee dat het ook expliciet kan worden gespecificeerd om meer leesbaarheid te hebben.
Laten we eens kijken naar een voorbeeldvoorbeeld van een UNION-query.
Stel dat er 2 tafels zijn - werknemer en student - elk met persoonlijke informatie.
Voer nu enkele dummy-gegevens in beide tabellen in, zoals hieronder wordt weergegeven:
Zoals u hierboven kunt zien, hebben we met opzet een rij toegevoegd met dezelfde attributen voor naam, leeftijd en geboortedatum.
Laten we nu kijken hoe we de gegevens in deze 2 tabellen kunnen combineren met UNION-opdrachten. We zullen de gebruikersnaam en de leeftijd van beide tabellen opvragen.
Eenvoudige UNION
Vraag:
U ziet 9 records in het resultaat (wat betekent dat de bovenstaande zoekopdracht de dubbele invoer heeft weggelaten).
Uitgang:
naam | leeftijd |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | twintig |
Akasha | 22 |
Shirley | 19 |
Joana | eenentwintig |
UNION met UNION ALL
Als u de clausule UNION met ALL gebruikt, zorgt u ervoor dat de dubbele vermeldingen ook worden weergegeven.
Vraag:
Uitgang:
naam | leeftijd |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | twintig |
Akasha | 22 |
Shirley | 19 |
Joana | eenentwintig |
Kartik | twintig |
UNIE met voorwaarde
Laten we voorwaarden toevoegen aan de SELECT-verklaringen waarbij we gegevens willen van de werknemers jonger dan 30 jaar en studenten jonger dan 25 jaar.
Vraag:
Uitgang:
naam | leeftijd |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | twintig |
Akasha | 22 |
Shirley | 19 |
Joana | eenentwintig |
Zoals u hierboven kunt zien, bevat de resultatenset het gecombineerde resultaat met individuele SELECT-voorwaarden gevalideerd.
UNION-resultaten bestellen
De resultaten van een UNION-query zijn standaard ongeordend.
Om een ordening op te leggen door een kolom die in de resulterende set bestaat, kan een ORDER BY-clausule worden gespecificeerd aan het einde van het UNION-commando.
Laten we dezelfde werknemer- / leerlinggegevens gebruiken en de UNION-resultaten in oplopende volgorde op leeftijd rangschikken.
Uitgang:
naam | leeftijd |
---|---|
Shirley | 19 |
Kartik | twintig |
Joana | eenentwintig |
Akasha | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
De bovenstaande resultatenset is gerangschikt op leeftijdswaarden in oplopende volgorde. We kunnen ook kolomaliassen gebruiken om naar de kolommen in de ORDER BY-clausule te verwijzen.
Bijvoorbeeld: - Een zoekopdracht als de onderstaande levert ook hetzelfde resultaat op.
Er is een andere manier om de ORDER BY-clausule te gebruiken door alleen de kolompositie te vermelden in plaats van de kolomnaam.
Bijvoorbeeld: In de bovenstaande UNION-query selecteren we naam en leeftijd, wat inhoudt dat deze kolommen respectievelijk op positie 1 en 2 staan.
Dus om te ORDEREN OP leeftijd, kunnen we eenvoudig de positie specificeren in plaats van de daadwerkelijke kolomnaam.
Daarom zal de onderstaande query ook hetzelfde resultaat opleveren.
MySQL UNION versus UNION ALL
MySQL biedt 2 varianten van UNION, d.w.z. UNION DISTINCT en UNIE ALLEN
Houd er rekening mee dat de DISTINCT standaard wordt geïmpliceerd, zelfs als deze niet wordt vermeld.
Het belangrijkste verschil tussen beide is dat UNION ALL het ook mogelijk maakt om dubbele rijen te combineren en terug te sturen, terwijl UNION alleen de gecombineerde rijen retourneert en duplicaten verwijdert.
De onderstaande tabel legt de details uit:
Parameter | UNIE | UNIE ALLEN |
---|---|---|
Definitie | Is gelijk aan UNION DISTINCT - negeert dubbele rijen met gegevens terwijl het resultaat wordt geretourneerd | Retourneert alle rijen inclusief duplicaten |
Syntaxis | SELECTEER {columnList} VAN {table1} UNIE SELECTEER {columnList} VAN {table2} | SELECTEER {columnList} VAN {table1} UNIE ALLEN SELECTEER {columnList} VAN {table2} |
Data benodigdheden | Gecombineerde gegevens moeten vergelijkbare gegevenstypen hebben en moeten in dezelfde volgorde worden opgehaald als ze uit meerdere tabellen worden opgehaald | Hetzelfde als UNION |
Veel Gestelde Vragen
V # 1) Is Union sneller dan JOIN?
Antwoord: UNION en JOINs worden voor praktisch 2 verschillende doeleinden gebruikt.
Technisch gezien is UNION veel sneller dan JOIN (vooral voor grote gegevenssets) omdat UNION alleen rijen met gegevens uit de afzonderlijke SELECT-instructies samenvoegt.
V # 2) Wat is de UNION ALL-operator?
Antwoord: Net als bij UNION retourneert de operator UNION ALL ook de UNION tussen 2 SELECT-query's, maar het verschil is dat deze ook de dubbele rijen / items bevat.
V # 3) Wat is het verschil tussen UNION en JOIN?
Antwoord: Zowel UNION als JOIN worden gebruikt om gegevens uit 2 of meer tabellen te combineren. Maar er is een enorm verschil in de verkregen resultatenset en de manier waarop gegevens worden opgehaald.
Overeenkomsten en verschillen tussen JOIN en UNION worden vermeld in de onderstaande tabel:
UNIE | WORD LID |
---|---|
Combineert gegevens uit meerdere tabellen | Combineert gegevens uit meerdere tabellen |
Vereist geen specifieke voorwaarde om gegevens te verzamelen of te combineren | JOIN werkt op een JOIN-voorwaarde die nodig is om gegevens die in de resultatenset binnenkomen te valideren |
Gegevens uit verschillende tabellen worden als verschillende rijen van de resultatenset genomen | Gegevens uit verschillende tabellen worden gecombineerd in één rij - bijvoorbeeld een rij in resultatenset kan 2 kolommen uit tabel 1, 3 kolommen uit tabel 2 enz. Bevatten, afhankelijk van de voorwaarde JOIN en SELECT-query |
UNION's zijn eenvoudig en duidelijk | JOINS vereisen complexe voorwaarden en afhankelijk van de behoeften kunnen meerdere soorten joins zoals INNER / OUTER enz. Worden gebruikt. |
Gevolgtrekking
In deze tutorial hebben we geleerd hoe we MySQL UNION kunnen gebruiken om gegevens van 2 of meer SELECT-instructies te combineren.
De UNION-instructie is erg handig voor het verzamelen van vergelijkbare gegevens uit grote sets van verschillende tabellen en het vervolgens uitvoeren van een analyse op de gecombineerde gegevens.
Het UNION-commando ondersteunt ook een ALL-clausule waarmee ook de dubbele records kunnen worden opgehaald.
Aanbevolen literatuur
- Wat is MySQL en waarom wordt het gebruikt?
- Verschil tussen SQL versus MySQL versus SQL Server (met voorbeelden)
- Inner Join Vs Outer Join: exact verschil met voorbeelden
- MySQL JOIN-zelfstudie: binnen, buiten, kruis, links, rechts en zelf
- MySQL Create Bekijk zelfstudie met codevoorbeelden
- MySQL Create Table Tutorial met voorbeelden
- MySQL Update Statement Tutorial - Update Query Syntax & Voorbeelden
- Top 40 beste MySQL-interviewvragen en antwoorden (vragen over 2021)