Opérateur MySQL UNION
L'opérateur MySQL UNION
L' UNION
opérateur est utilisé pour combiner l'ensemble de résultats de deux
SELECT
déclarations ou plus.
- Chaque
SELECT
instruction à l'intérieurUNION
doit avoir le même nombre de colonnes - Les colonnes doivent également avoir des types de données similaires
- Les colonnes de chaque
SELECT
instruction doivent également être dans le même ordre
Syntaxe UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION ALL Syntaxe
L' UNION
opérateur ne sélectionne que des valeurs distinctes par défaut. Pour autoriser les valeurs en double, utilisezUNION ALL
:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Remarque : Les noms de colonne dans le jeu de résultats sont généralement égaux aux noms de colonne dans la première SELECT
instruction.
Base de données de démonstration
Dans ce didacticiel, nous utiliserons la célèbre base de données d'exemples Northwind.
Voici une sélection du tableau "Clients":
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 |
Et une sélection du tableau "Fournisseurs":
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 |
SQL UNION Exemple
L'instruction SQL suivante renvoie les villes (uniquement des valeurs distinctes) des tables "Clients" et "Fournisseurs" :
Exemple
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Remarque : Si certains clients ou fournisseurs ont la même ville, chaque ville ne sera répertoriée qu'une seule fois, car UNION
ne sélectionne que des valeurs distinctes. Utilisez
UNION ALL
pour sélectionner également les valeurs en double !
SQL UNION TOUS Exemple
L'instruction SQL suivante renvoie les villes (valeurs en double également) des tables "Clients" et "Fournisseurs" :
Exemple
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION Avec WHERE
L'instruction SQL suivante renvoie les villes allemandes (uniquement des valeurs distinctes) à partir des tables "Clients" et "Fournisseurs" :
Exemple
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
SQL UNION ALL Avec WHERE
L'instruction SQL suivante renvoie les villes allemandes (valeurs en double également) à partir des tables "Clients" et "Fournisseurs" :
Exemple
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Un autre exemple d'UNION
L'instruction SQL suivante répertorie tous les clients et fournisseurs :
Exemple
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
Remarquez le "AS Type" ci-dessus - c'est un alias. Les alias SQL sont utilisés pour donner à une table ou à une colonne un nom temporaire. Un alias n'existe que pour la durée de la requête. Donc, ici, nous avons créé une colonne temporaire nommée "Type", qui indique si la personne de contact est un "Client" ou un "Fournisseur".