MySQL UNION – Tutoriel complet

Qu'est-ce qu'un syndicat ?

Les unions combinent les résultats de plusieurs requêtes SELECT dans un jeu de résultats consolidé.

La seule condition requise pour que cela fonctionne est que le nombre de colonnes soit le même pour toutes les requêtes SELECT qui doivent être combinées.

Supposons que nous ayons deux tableaux comme suit

MySQL UNIONMySQL UNION

Créons maintenant une requête UNION pour combiner les deux tables à l'aide de DISTINCT

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

Ici, les lignes en double sont supprimées et seules les lignes uniques sont renvoyées.

Syndicat distinct

Attention: MySQL utilise la clause DISTINCT par défaut lors de l'exécution de requêtes UNION si rien n'est spécifié.

Créons maintenant une requête UNION pour combiner les deux tables en utilisant ALL

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

Ici, les lignes en double sont incluses et puisque nous utilisons TOUS.

Union-Tous

Pourquoi utiliser les syndicats ?

Supposons qu'il y ait un défaut dans la conception de votre base de données et que vous utilisiez deux tables différentes destinées au même objectif. Vous souhaitez consolider ces deux tables en une seule tout en évitant que les enregistrements en double ne s'insinuent dans la nouvelle table. Vous pouvez utiliser UNION dans de tels cas.

Résumé

  • La commande UNION est utilisée pour combiner plusieurs résultats de requête SELECT en une seule requête contenant les lignes de toutes les requêtes de sélection.
  • Le nombre de colonnes et de types de données dans le Instructions SELECT doit être le même pour que la commande UNION fonctionne.
  • La clause DISTINCT est utilisée pour éliminer les valeurs en double du jeu de résultats de la requête UNION. MySQL utilise la clause DISTINCT par défaut lors de l'exécution de requêtes UNION si rien n'est spécifié.
  • La clause ALL est utilisée pour renvoyer toutes les lignes, même les lignes en double, dans la requête UNION.

Exemples pratiques utilisant MySQL établi

Dans notre myFlixDB, combinons

member_number et full_names de la table Members

avec

movie_id et titre de la table des films

Nous pouvons utiliser la requête suivante

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

Exécuter le script ci-dessus dans MySQL établi contre myflixdb nous donne les résultats suivants présentés ci-dessous.

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men