MySQL UNION -operator
De MySQL UNION-operator
De UNION
operator wordt gebruikt om de resultatenset van twee of meer
SELECT
instructies te combineren.
- Elke
SELECT
instructie binnenUNION
moet hetzelfde aantal kolommen hebben - De kolommen moeten ook vergelijkbare gegevenstypen hebben
- De kolommen in elke
SELECT
instructie moeten ook in dezelfde volgorde staan
UNION-syntaxis
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION ALL-syntaxis
De UNION
operator selecteert standaard alleen afzonderlijke waarden. Gebruik om dubbele waarden toe te staan UNION ALL
:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Opmerking: De kolomnamen in de resultatenset zijn meestal gelijk aan de kolomnamen in de eerste SELECT
instructie.
Demodatabase
In deze tutorial gebruiken we de bekende Northwind-voorbeelddatabase.
Hieronder vindt u een selectie uit de tabel "Klanten":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
En een greep uit de tabel "Leveranciers":
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
Voorbeeld van SQL UNION
De volgende SQL-instructie retourneert de steden (alleen afzonderlijke waarden) van zowel de tabel "Klanten" als de tabel "Leveranciers":
Voorbeeld
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Opmerking: als sommige klanten of leveranciers dezelfde stad hebben, wordt elke stad slechts één keer vermeld, omdat UNION
alleen verschillende waarden worden geselecteerd. Gebruik
UNION ALL
om ook dubbele waarden te selecteren!
SQL UNION ALL Voorbeeld
De volgende SQL-instructie retourneert de steden (ook dubbele waarden) van zowel de tabel "Klanten" als de tabel "Leveranciers":
Voorbeeld
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION Met WAAR
De volgende SQL-instructie retourneert de Duitse steden (alleen afzonderlijke waarden) uit zowel de tabel "Klanten" als de tabel "Leveranciers":
Voorbeeld
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
SQL UNION ALLES Met WHERE
De volgende SQL-instructie retourneert de Duitse steden (ook dubbele waarden) uit zowel de tabel "Klanten" als de tabel "Leveranciers":
Voorbeeld
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Een ander UNION-voorbeeld
In het volgende SQL-statement staan alle klanten en leveranciers:
Voorbeeld
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
Let op het "AS Type" hierboven - het is een alias. SQL-aliassen worden gebruikt om een tabel of kolom een tijdelijke naam te geven. Een alias bestaat alleen voor de duur van de query. Daarom hebben we hier een tijdelijke kolom gemaakt met de naam "Type", waarin wordt vermeld of de contactpersoon een "Klant" of een "Leverancier" is.