English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Opérateur UNION SQL

Dans ce tutoriel, vous apprendrez à combiner les résultats de deux ou plusieurs requêtes SQL.

Opérateur UNION

L'opérateur UNION est utilisé pour fusionner les résultats de deux ou plusieurs requêtes SELECT dans un seul ensemble de résultats. L'opérateur UNION est différent de l'union des colonnes de deux tables. L'opérateur UNION place toutes les lignes des deux tables sources dans un tableau de résultats unique, créant ainsi une nouvelle table.

Voici les règles de base pour utiliser l'union (UNION) pour combiner les résultats de deux requêtes SELECT :

  • Dans toutes les requêtes, le nombre et l'ordre des colonnes doivent être identiques.

  • Le type de données des colonnes correspondantes doit être compatible.

Lorsque ces conditions sont satisfaites, ces tables sont compatibles en union (union-compatible) :

Syntaxe

Syntaxe de base de UNION :

SELECT column_list FROM table1_name
   UNION SELECT column_list FROM table2_name;

Pour mieux comprendre l'opération de union, nous supposons que dans les tables employees et customers existent des champs hypothétiques, par exemple first_name et last_name. Veuillez noter que ces champs n'existent pas réellement dans nos tables de bases de données de démonstration.

+----+------------+-----------+--------+
| id | first_name | last_name | salary |
+----+------------+-----------+--------+
|  1 | Ethan | Hunt |   5000 |
|  2 | Tony | Montana |   6500 |
|  3 | Sarah | Connor |   8000 |
|  4 | Rick | Deckard |   7200 |
|  5 | Martin | Blank |   5600 |
+----+------------+-----------+--------+

+----+------------+-----------+----------+
| id | first_name | last_name | city |
+----+------------+-----------+----------+
|  1 | Maria | Anders | Berlin |
|  2 | Fran | Wilson | Madrid |
|  3 | Dominique | Perrier | Paris |
|  4 | Martin | Blank | Turin |
|  5 | Thomas | Hardy | Portland |
+----+------------+-----------+----------+
Tableau : employees
Tableau : customers

Laissons-nous exécuter l'opération de union pour fusionner les résultats des deux requêtes.

La requête suivante renvoie les noms et prénoms de tous les clients et employés :

SELECT first_name, last_name FROM employees 
UNION
SELECT first_name, last_name FROM customers;

Après l'exécution de la requête ci-dessus, le résultat sera comme suit :

+---------------+--------------+
| first_name | last_name |
+---------------+--------------+
| Ethan | Hunt |
| Tony | Montana |
| Sarah | Connor |
| Rick | Deckard |
| Martin | Blank |
| Maria | Anders |
| Fran | Wilson |
| Dominique | Perrier |
| Thomas | Hardy |
+---------------+--------------+

Par défaut, l'opérateur UNION élimine les lignes répétées du résultat combiné. Voilà pourquoi la requête ci-dessus ne retourne que9Lignes, si vous remarquez que le nom "Martin Blank" apparaît à la fois dans les tables employees et customers.

Cependant, si vous souhaitez conserver les lignes répétées, vous pouvez utiliser la clé ALL, comme suit :

SELECT first_name, last_name FROM employees 
UNION ALL
SELECT first_name, last_name FROM customers;