Clause UNION de MySQL
La clause `UNION` de MySQL est utilisée pour combiner les résultats de deux ou plusieurs requêtes `SELECT` en un seul résultat. Il garantit que les résultats sont distincts, en éliminant les lignes en double.
Utilisation
La clause `UNION` est appliquée lorsque vous devez fusionner les résultats de plusieurs instructions `SELECT`, qui doivent avoir le même nombre de colonnes et des types de données compatibles. Il simplifie la recherche de données à partir de requêtes multiples.
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
Dans cette syntaxe, `UNION` est utilisé pour concaténer les résultats des instructions `SELECT` de `table1` et `table2`.
Exemples
1. UNION de base
SELECT city
FROM customers
UNION
SELECT city
FROM suppliers;
Cet exemple combine les villes des tableaux `customers` et `suppliers`, en supprimant les doublons.
2. UNION avec différents filtres
SELECT product_name
FROM products
WHERE stock > 50
UNION
SELECT product_name
FROM discontinued_products
WHERE discontinued_date > '2023-01-01';
Ici, l'union combine les noms de produits du tableau `products` dont le stock est supérieur à 50 avec les noms de produits du tableau `discontinued_products` qui ont été abandonnés après le 1er janvier 2023.
3. UNION ALL pour inclure les doublons
SELECT employee_id, name
FROM full_time_employees
UNION ALL
SELECT employee_id, name
FROM part_time_employees;
Dans ce cas, `UNION ALL` inclut tous les doublons, montrant chaque employé des tableaux `full_time_employees` et `part_time_employees`.
4. UNION avec ORDER BY
SELECT department
FROM departments
UNION
SELECT department
FROM archived_departments
ORDER BY department;
Cet exemple démontre l'utilisation de `ORDER BY` pour trier les résultats combinés des départements provenant à la fois de `departments` et de `archived_departments`.
Conseils et bonnes pratiques
- Assurez-vous de la compatibilité des colonnes. Le nombre et le type de données des colonnes de chaque instruction `SELECT` doivent correspondre. La non-concordance des colonnes peut entraîner des erreurs.
- Utilisez UNION ALL pour des raisons de performance. Si les doublons sont acceptables, utilisez `UNION ALL` qui est plus rapide puisqu'il ne supprime pas les doublons.
- Classez les résultats de manière appropriée. Utilisez `ORDER BY` une seule fois après l'instruction `SELECT` finale pour trier l'ensemble du résultat de l'union.
- Optimisez les requêtes individuelles. Assurez-vous que chaque requête `SELECT` est optimisée pour la performance avant d'utiliser `UNION`.
- Tenez compte de la taille de l'ensemble des données. Les grands ensembles de données peuvent avoir un impact sur les performances ; envisagez de décomposer les requêtes ou d'utiliser des index pour les optimiser.
Gestion des erreurs
Soyez attentif aux erreurs potentielles ou aux avertissements s'il y a une incohérence dans le nombre de colonnes ou les types de données entre les instructions `SELECT`. Veillez à la compatibilité des colonnes pour éviter ces problèmes.