Bij het verwerken van gegevens in databases hebben we vaak de neiging om de set-operators in SQL te gebruiken om gegevens op te halen volgens onze vereisten door twee of meer SELECT-instructies te combineren. In dit artikel over SQL UNION bespreek ik de UNION-operator die wordt gebruikt om gegevens op te halen in de volgende volgorde:
- Wat is de SQL UNION-operator?
- Syntaxis:
- UNION-syntaxis
- UNION ALL-syntaxis
- Verschillen tussen UNION en UNION ALL
- SQL UNION-voorbeelden:
- UNION Operator-voorbeeld
- UNION ALL-operatorvoorbeeld
- UNION met SQL-aliassen
- UNION met WHERE-clausule
- UNION ALL met WHERE-clausule
- UNION met JOINS
- UNION ALL met JOINS
Laten we beginnen!
Wat is de SQL UNION-operator?
Zoals de naam al doet vermoeden, wordt deze operator/clausule gebruikt om de resultaten van twee of meer SELECT-instructies te combineren. Hier moet elke SELECT-instructie die in de UNION-instructie wordt gebruikt, hetzelfde aantal kolommen in dezelfde volgorde hebben. Ook moeten alle kolommen in de SELECT-instructies vergelijkbare gegevenstypen hebben.
De UNION-clausule geeft alleen unieke waarden als uitvoer. Voor het geval u dubbele waarden wilt, moet u de UNION ALL-clausule gebruiken.
Laten we verder gaan met dit artikel over SQL UNION en de syntaxis begrijpen.
SQL UNION-syntaxis
UNION-syntaxis
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
UNION ALL-syntaxis
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION ALL SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Laten we verder gaan in dit artikel en de verschillen tussen UNION en UNION ALL begrijpen.
Verschillen tussen SQL UNION en UNION ALL
UNION | ALLES UNIE |
Combineert twee of meer resultaatsets en behoudt de dubbele waarden niet. | Combineert twee of meer resultaatsets en behoudt de dubbele waarden. |
Syntax: UNION | Syntax: UNION ALL |
Laten we vervolgens in dit artikel over SQL UNION de verschillende manieren om deze operator te gebruiken begrijpen.
Voorbeelden van SQL UNION en UNION ALL
Voor een beter begrip zal ik de volgende tabellen overwegen om u verschillende voorbeelden te laten zien.
Medewerkerstabel
EmpID | Naam | EmpAge | Stad | Postcode | Land |
1 | Emma | 23 | Berlijn | 12109 | Duitsland |
2 | Rahul | 26 | Mumbai | 400015 | India |
3 | Aayra | 24 | New York | 10014 | VS |
4 | John | 32 | Londen | E1 7AE | VK |
5 | Derek | 29 | New York | 10012 | VS |
Projectentabel
Project-ID | Naam | WorkingDays | Stad | Postcode | Land |
1 | Project 1 | 10 | Berlijn | 12109 | Duitsland |
2 | Project 2 | 7 | Mumbai | 400015 | India |
3 | Project 3 | 20 | Delhi | 110006 | India |
4 | Project 4 | 15 | Mumbai | 400015 | India |
5 | Project 5 | 28 | Berlijn | 12109 | Duitsland |
Laten we beginnen met voorbeelden.
SQL UNION-voorbeelden
UNION-operatorvoorbeeld
Schrijf een query om verschillende steden op te halen uit de tabel Werknemers en Projecten.
SELECT City FROM Employees UNION SELECT City FROM Projects ORDER BY City;
Uitvoer:
Stad |
Berlijn |
Delhi |
Londen |
Mumbai |
New York |
UNION ALL-operatorvoorbeeld
Schrijf een query om steden op te halen uit de tabel Werknemers en Projecten. Hier moeten dubbele waarden worden opgenomen.
SELECT City FROM Employees UNION ALL SELECT City FROM Projects ORDER BY City;
Uitvoer:
Stad |
Berlijn |
Berlijn |
Berlijn |
Delhi |
Londen |
Mumbai |
Mumbai
|
Mumbai |
New York |
New York |
Laten we in dit artikel eens kijken hoe we de UNION-clausule kunnen gebruiken met SQL-aliassen.
UNION met SQL-aliassen
SQL-aliassen worden gebruikt om een tabel of kolom een tijdelijke naam te geven. Laten we dus een zoekopdracht schrijven om alle unieke medewerkers en projecten op te sommen.
SELECT 'Employee' AS Type, Name, City, Country FROM Employees UNION SELECT 'Project', Name, City, Country FROM Projects;
Uitvoer:
Type | Naam | Stad | Land |
Werknemer | Emma | Berlijn | Duitsland |
Werknemer | Rahul | Mumbai | India |
Werknemer | Aayra | New York | VS |
Werknemer | Jan | Londen | VK |
Werknemer | Derek | New York | VS |
Project | Project 1 | Berlijn | Duitsland |
Project | Project 2 | Mumbai | India |
Project | Project 3 | Delhi | India |
Project | Project 4 | Mumbai | India |
Project | Project 5 | Berlijn | Duitsland |
UNION met WHERE-clausule
Schrijf een zoekopdracht om de verschillende Indiase steden en hun postcodes op te halen uit zowel de tabel Werknemers als Projecten.
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Uitvoer:
Stad | Postcode | Land |
Delhi | 110006 | India |
Mumbai | 400015 | India |
UNION ALL met WHERE-clausule
Schrijf een zoekopdracht om Indiase steden en hun postcodes op te halen uit zowel de tabel Werknemers als Projecten, waar dubbele waarden zijn toegestaan
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION ALL SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Uitvoer:
Stad | Postcode | Land |
Delhi | 110006 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Laten we verder gaan in dit artikel en laten we begrijpen hoe we de UNION- en UNION ALL-clausules met JOINS kunnen gebruiken. JOINS in SQL zijn opdrachten die worden gebruikt om rijen uit twee of meer tabellen te combineren, gebaseerd op een gerelateerde kolom tussen die tabellen.
UNION met JOINS
De SQL UNION-operator kan worden gebruikt met SQL JOINS om gegevens uit twee verschillende tabellen op te halen. Ik ga de volgende tabel samen met de tabel Werknemers als voorbeeld beschouwen.
Tabel ProjectDetails
PID | WorkingDays | EmpID | CostforProject |
11 | 12 | 4 | 20000 |
22 | 16 | 3 | 35000 |
33 | 30 | 1 | 60000 |
44 | 25 | 3 | 45000 |
55 | 21 | 1 | 50000 |
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Uitvoer:
EmpID | Naam | CostforProject |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Rahul | NULL |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | Jan | 20000 |
5 | Derek | NULL |
UNIE ALLES met JOINS
Schrijf een query om de EmpID, Name en CostforProject op te halen uit de tabel Employees en ProjectDetails, waar dubbele waarden zijn toegestaan.
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION ALL SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Uitvoer:
EmpID | Naam | CostforProject |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Rahul | NULL |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | Jan | 20000 |
5 | Derek | NULL |
4 | Jan | 20000 |
3 | Aayra | 35000 |
1 | Emma | 60000 |
3 | Aayra | 35000 |
1 | Emma | 50000 |
Hiermee kom ik aan het einde van dit artikel over SQL UNION. Ik hoop dat je dit artikel over SQL UNION met plezier hebt gelezen. We hebben de verschillende manieren gezien om de opdrachten UNION en UNION ALL te gebruiken om u te helpen bij het schrijven van query's. Als u meer wilt weten over MySQL en deze open source relationele database wilt leren kennen, bekijk dan onze MySQL DBA Certificeringstraining die wordt geleverd met een door een instructeur geleide live training en real-life projectervaring. Deze training zal u helpen MySQL diepgaand te begrijpen en u te helpen het onderwerp onder de knie te krijgen.
Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van "SQL UNION" en ik neem contact met je op.