MySQL est actuellement l'un des systèmes de gestion de bases de données relationnelles les plus populaires. Pour les opérateurs de bases de données, interroger des données, les calculer et les traiter est une compétence essentielle. Mais parfois, nous devons combiner certains résultats pour faciliter leur analyse et leur traitement. Dans MySQL, il existe plusieurs façons d'y parvenir.
Ci-dessous, nous présenterons quelques méthodes MySQL couramment utilisées pour fusionner les résultats des requêtes.
UNION est l'un des moyens les plus courants de fusionner les résultats d'une requête. Il peut combiner les résultats de plusieurs instructions SELECT et supprimer les lignes en double du résultat final.
Par exemple, nous avons deux tables A et B, qui ont les mêmes colonnes :
SELECT column1, column2 FROM A UNION SELECT column1, column2 FROM B;
Cette requête fusionnera les données des tables A et B et supprimera les lignes en double. Il convient de noter que UNION ne peut combiner que les résultats de deux instructions SELECT. Si vous devez combiner les résultats de trois instructions SELECT ou plus, vous devez utiliser l'opérateur UNION plusieurs fois.
UNION ALL est très similaire à UNION, mais ne supprime pas les lignes en double. Lors de l'utilisation de UNION ALL, les lignes en double seront conservées.
Par exemple, il y a deux tables A et B, qui ont les mêmes colonnes :
SELECT column1, column2 FROM A UNION ALL SELECT column1, column2 FROM B;
Cette requête fusionnera les données des tables A et B et conservera les lignes en double.
Puisque UNION ALL n'a pas besoin de supprimer les lignes en double, il est plus rapide et plus efficace que UNION. Toutefois, si les données sont très volumineuses, les performances des requêtes peuvent être affectées.
INNER JOIN peut combiner les données de deux tables ou plus et faire correspondre les données dans leurs colonnes communes. Cette opération ne renverra des résultats que lorsqu'il y aura une correspondance entre les données des deux tables.
Par exemple, il y a deux tables A et B, elles ont la même colonne colonne1 :
SELECT A.column1, A.column2, B.column3 FROM A INNER JOIN B ON A.column1 = B.column1;
Cette requête renverra les lignes de données correspondantes dans les tables A et B. Dans cet exemple, seules les lignes contenant des correspondances sont renvoyées.
LEFT JOIN est très similaire à INNER JOIN, il peut également fusionner les données de deux tables ou plus et faire correspondre les données dans leurs colonnes communes. Cependant, il renvoie non seulement les résultats des correspondances, mais également les résultats pour lesquels il n'y a aucune correspondance dans le tableau de gauche.
Par exemple, il y a deux tables A et B, elles ont la même colonne colonne1 :
SELECT A.column1, A.column2, B.column3 FROM A LEFT JOIN B ON A.column1 = B.column1;
Cette requête renverra toutes les lignes de données du tableau A, et les lignes de données correspondantes du tableau B, s'il n'y a pas de données correspondantes ligne du tableau B avec les données correspondantes du tableau A, une valeur NULL sera renvoyée.
RIGHT JOIN est l'opposé de LEFT JOIN, il renvoie des résultats sans correspondance dans le tableau de droite.
Par exemple, il y a deux tables A et B, elles ont la même colonne colonne1 :
SELECT A.column1, A.column2, B.column3 FROM A RIGHT JOIN B ON A.column1 = B.column1;
Cette requête renverra toutes les lignes de données du tableau B, et les lignes de données correspondantes du tableau A, s'il n'y a pas de ligne dans table A qui correspond aux données correspondantes de la table B, une valeur NULL sera renvoyée.
FULL OUTER JOIN peut fusionner toutes les lignes de données de deux tables ensemble, même s'il n'y a pas de correspondance dans les deux tables.
MySQL ne prend pas en charge l'instruction FULL OUTER JOIN. Cependant, UNION ALL peut être utilisé conjointement avec LEFT JOIN et RIGHT JOIN pour obtenir des effets similaires.
Par exemple, il y a deux tables A et B, elles ont la même colonne colonne1 :
SELECT A.column1, A.column2, B.column3 FROM A LEFT JOIN B ON A.column1 = B.column1 UNION ALL SELECT A.column1, A.column2, B.column3 FROM A RIGHT JOIN B ON A.column1 = B.column1 WHERE A.column1 IS NULL;
Cette requête renverra les correspondances à toutes les lignes de données des tables A et B ainsi qu'aucune ligne de données correspondante.
Conclusion
Les méthodes ci-dessus sont courantes pour fusionner les résultats des requêtes dans MySQL. La méthode que vous choisissez dépend des résultats dont vous avez besoin et des performances de votre requête.
Lors de l'exécution de requêtes, faites toujours attention à l'efficacité des requêtes. Dans la plupart des cas, les opérations UNION prennent beaucoup de temps. Si vous effectuez une requête avec des ensembles de données volumineux, vous devez éviter d'utiliser la commande UNION et utiliser plutôt d'autres méthodes disponibles pour optimiser les performances des requêtes.
Bien sûr, pour un scénario commercial spécifique, nous devons également choisir la méthode à utiliser en fonction des besoins réels de l'entreprise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!