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

Opérateur UNION MySQL

Ce tutoriel vous présente la syntaxe et des exemples de l'opérateur UNION MySQL.

L'opérateur UNION MySQL est utilisé pour combiner les résultats de deux ou plusieurs requêtes SELECT en un ensemble de résultats unique. Plusieurs requêtes SELECT suppriment les données redondantes.

Syntaxe

Format de syntaxe de l'opérateur UNION MySQL :

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

paramètres

  • expression1, expression2, ... expression_n: Colonnes à rechercher.

  • tables: Tableau de données à rechercher.

  • WHERE conditions: Optionnel, condition de recherche.

  • DISTINCT: Optionnel, supprimer les données redondantes dans l'ensemble de résultats. Par défaut, l'opérateur UNION supprime déjà les données redondantes, donc le modificateur DISTINCT n'a pas d'effet sur les résultats.

  • ALL: Optionnel, retourner tous les ensembles de résultats, y compris les données redondantes.

base de données de démonstration

Dans ce tutoriel, nous allons utiliser w3base de données de exemple codebox.

Voici les données sélectionnées à partir de la table "Websites":

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name                                                                                                  | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google                  | https://www.google.cm/    | 1     | USA                  |
| 2  | 淘宝                          | https://www.taobao.com/   | 13    | CN                  |
| 3  | 基础教程网                  | http://fr.oldtoolbag.com/    | 4689  | CN                  |
| 4  | 微博                          | http://weibo.com/         | 20                  | CN                  |
| 5  | Facebook                  | https://www.facebook.com/ | 3     | USA                  |
| 7  | stackoverflow | http://stackoverflow.com/ |          0          | IND                  |
+----+---------------+---------------------------+-------+---------+

Voici les données de l'APP "apps":

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name                 | url                                                                                  | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP                 | http://im.qq.com/       | CN                  |
|  2 | 微博 APP | http://weibo.com/       | CN                  |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN                  |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)

Exemple de UNION SQL

La requête SQL suivante sélectionne toutes les lignes des tables "Websites" et "apps"Différentscountry (seulement les valeurs différentes) :

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

Le résultat de l'exécution de l'SQL suivant est le suivant :

Remarque :UNION ne peut pas être utilisé pour lister toutes les valeurs country de deux tables. Si certains sites web et des applications viennent du même pays, chaque pays ne sera listé qu'une seule fois. UNION sélectionnera uniquement les valeurs différentes. Utilisez UNION ALL pour sélectionner les valeurs redondantes !

Exemple de UNION ALL SQL

La requête SQL suivante utilise UNION ALL pour sélectionner des enregistrements à partir des tables "Websites" et "apps"Touscountry (y compris les valeurs redondantes) :

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
	ORDER BY country;

Le résultat de l'exécution de l'SQL suivant est le suivant :

UNION ALL avec WHERE

La requête SQL suivante utilise UNION ALL pour sélectionner des enregistrements à partir des tables "Websites" et "apps"TousLes données de la Chine (CN) (y compris les valeurs redondantes) :

Exemple en ligne

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
	SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY 
	country;

Le résultat de l'exécution de l'SQL suivant est le suivant :