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.
Syntaxe
Section titled “Syntaxe”La syntaxe de la requête SQL pour unir les résultats de 2 tables est la suivante :
SELECT * FROM table1UNION ALLSELECT * FROM table2;Différence entre UNION et UNION ALL
Section titled “Différence entre UNION et UNION ALL”| 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 |
Exemple concret
Section titled “Exemple concret”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_clientUNION ALLSELECT * FROM magasin2_client;Résultat
Section titled “Résultat”| 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 ?”Cas d’usage recommandé pour UNION ALL
Section titled “Cas d’usage recommandé pour UNION ALL”- Données provenant de sources distinctes : si vous savez que les tables ne contiennent pas de doublons entre elles.
- Performance :
UNION ALLest 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.
Cas d’usage pour UNION
Section titled “Cas d’usage pour UNION”- Vous souhaitez éliminer les doublons.
- Les données peuvent contenir des redondances que vous voulez supprimer.
- Vous voulez une liste unique d’éléments.
Exemple avec plusieurs tables
Section titled “Exemple avec plusieurs tables”On peut concaténer plus de 2 tables :
SELECT * FROM magasin1_clientUNION ALLSELECT * FROM magasin2_clientUNION ALLSELECT * FROM magasin3_client;Ordre des résultats
Section titled “Ordre des résultats”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 :
- D’abord tous les résultats de la première requête
- Puis tous les résultats de la deuxième requête
- Et ainsi de suite
Si vous souhaitez un ordre particulier, utilisez ORDER BY sur l’ensemble :
SELECT * FROM magasin1_clientUNION ALLSELECT * FROM magasin2_clientORDER BY total_achat DESC;Prochain chapitre
Section titled “Prochain chapitre”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