Skip to content

UNION ALL – Concaténer avec doublons

Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 4 minutes


La commande UNION ALL de SQL est très similaire à la commande UNION. Elle permet de concaténer les enregistrements de plusieurs requêtes, à la seule différence que cette commande permet d’inclure tous les enregistrements, même les doublons. Ainsi, si un même enregistrement est présent normalement dans les résultats des 2 requêtes concaténées, alors l’union des 2 avec UNION ALL retournera 2 fois ce même résultat.

Bon à savoir : Tout comme la commande UNION, il convient que les 2 requêtes retournent exactement le même nombre de colonnes, avec les mêmes types de données et dans le même ordre.


La syntaxe de la requête SQL pour unir les résultats de 2 tables est la suivante :

SELECT * FROM table1
UNION ALL
SELECT * FROM table2;
Caractéristique UNION UNION ALL
Doublons Supprimés Conservés
Performance Plus lent (doit vérifier les doublons) Plus rapide
Cas d’usage Liste unique sans redondance Conservation de toutes les lignes

Imaginons une entreprise qui possède des bases de données dans chacun de ses magasins. Sur ces bases de données, il y a une table de la liste des clients avec quelques informations et le total des achats dans l’entreprise.

Table « magasin1_client » (premier magasin)

Section titled “Table « magasin1_client » (premier magasin)”
prenom nom ville date_naissance total_achat
Léon Dupuis Paris 1983-03-06 135
Marie Bernard Paris 1993-07-03 75
Sophie Dupond Marseille 1986-02-22 27
Marcel Martin Paris 1976-11-24 39

Table « magasin2_client » (deuxième magasin)

Section titled “Table « magasin2_client » (deuxième magasin)”
prenom nom ville date_naissance total_achat
Marion Leroy Lyon 1982-10-27 285
Paul Moreau Lyon 1976-04-19 133
Marie Bernard Paris 1993-07-03 75
Marcel Martin Paris 1976-11-24 39

Pour concaténer tous les enregistrements de ces tables, il est possible d’effectuer une seule requête utilisant la commande UNION ALL :

SELECT * FROM magasin1_client
UNION ALL
SELECT * FROM magasin2_client;
prenom nom ville date_naissance total_achat
Léon Dupuis Paris 1983-03-06 135
Marie Bernard Paris 1993-07-03 75
Sophie Dupond Marseille 1986-02-22 27
Marcel Martin Paris 1976-11-24 39
Marion Leroy Lyon 1982-10-27 285
Paul Moreau Lyon 1976-04-19 133
Marie Bernard Paris 1993-07-03 75
Marcel Martin Paris 1976-11-24 39

Le résultat de cette requête montre qu’il y a autant d’enregistrements que dans les deux tables réunies. Quelques clients étaient présents dans les deux tables d’origine (Marie Bernard et Marcel Martin) ; en conséquence, ils sont présents deux fois dans le résultat de cette requête SQL.


Quand utiliser UNION ALL plutôt que UNION ?

Section titled “Quand utiliser UNION ALL plutôt que UNION ?”
  • Données provenant de sources distinctes : si vous savez que les tables ne contiennent pas de doublons entre elles.
  • Performance : UNION ALL est plus rapide car il n’a pas à vérifier les doublons.
  • Logique métier : vous souhaitez conserver toutes les occurrences, même si elles sont identiques.
  • Journalisation / audit : conservation de toutes les lignes d’historique.
  • Vous souhaitez éliminer les doublons.
  • Les données peuvent contenir des redondances que vous voulez supprimer.
  • Vous voulez une liste unique d’éléments.

On peut concaténer plus de 2 tables :

SELECT * FROM magasin1_client
UNION ALL
SELECT * FROM magasin2_client
UNION ALL
SELECT * FROM magasin3_client;

Contrairement à UNION qui peut effectuer un tri implicite pour éliminer les doublons, UNION ALL conserve l’ordre d’exécution. Le résultat est généralement présenté dans l’ordre des requêtes :

  1. D’abord tous les résultats de la première requête
  2. Puis tous les résultats de la deuxième requête
  3. Et ainsi de suite

Si vous souhaitez un ordre particulier, utilisez ORDER BY sur l’ensemble :

SELECT * FROM magasin1_client
UNION ALL
SELECT * FROM magasin2_client
ORDER BY total_achat DESC;

Vous savez désormais comment concaténer des résultats en conservant tous les enregistrements avec UNION ALL. Mais comment obtenir uniquement les enregistrements communs à plusieurs requêtes ?

👉 Chapitre 18 : INTERSECT – Éléments communs

Bonne continuation !


Junior TSAFACK – 08/08/2026