Maison > Article > base de données > Comment fusionner les résultats d'une requête dans MySQL
Plusieurs instructions SELECT peuvent être combinées en un seul ensemble de résultats via le mot-clé UNION. Lors de la fusion, le nombre de colonnes et les types de données correspondant aux deux tables doivent être les mêmes. Séparez les instructions SELECT à l'aide du mot clé UNION ou UNION ALL. UNION n'utilise pas le mot-clé ALL, et les enregistrements en double sont supprimés lors de l'exécution, et toutes les lignes renvoyées sont uniques ; la fonction de l'utilisation du mot-clé ALL n'est pas de supprimer les lignes en double et de ne pas trier automatiquement les résultats ; Le format de syntaxe de base est le suivant :
SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2
Interrogez les informations de tous les fruits dont le prix est inférieur à 9, interrogez les informations de tous les fruits avec s_id égal à 101 et 103, utilisez UNION pour connecter les résultats de la requête, l'instruction SQL est comme suit :
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
Les résultats de la requête combinée sont les suivants :
UNION combine les résultats de plusieurs instructions SELECT en un seul ensemble de résultats, comme mentionné précédemment. Les résultats de chaque instruction SELECT peuvent être visualisés séparément :
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0;
SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
À partir des résultats de requêtes distinctes, nous pouvons voir que la première instruction SELECT interroge les fruits dont le prix est inférieur à 9, et la deuxième instruction SELECT interroge le fournisseur 101 et 103 fruits fournis. Utilisez UNION pour séparer deux instructions SELECT. Après l'exécution, combinez les résultats de sortie en un seul jeu de résultats et supprimez les enregistrements en double.
Dans l'exemple précédent, en raison de l'utilisation de UNION ALL pour contenir des lignes en double, les mêmes enregistrements ont été générés lors d'une requête séparée. UNION supprime automatiquement les lignes en double du jeu de résultats de la requête. Si vous souhaitez renvoyer toutes les lignes correspondantes sans suppression, vous pouvez utiliser UNION ALL.
Interrogez les informations de tous les fruits dont le prix est inférieur à 9, interrogez les informations de tous les fruits avec un s_id égal à 101 et 103, utilisez UNION ALL pour connecter les résultats de la requête, l'instruction SQL est la suivante :
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION ALL SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
La requête les résultats sont les suivants :
Les résultats peuvent être Comme vous pouvez le voir, le nombre total d'enregistrements ici est égal à la somme du nombre d'enregistrements renvoyés par les deux instructions SELECT. Les résultats de la requête de jointure ne suppriment pas les doublons. rangées.
Conseils : La différence entre UNION et UNION ALL : La fonction de l'utilisation de UNION ALL n'est pas de supprimer les lignes en double, et l'instruction de mot-clé ALL nécessite moins de ressources lors de l'exécution, alors utilisez-la autant que possible, pour que vous sachiez qu'il y a sont des lignes en double, mais lorsque vous souhaitez conserver ces lignes et vous assurer qu'il n'y aura pas de données en double dans les résultats de la requête ou qu'il n'est pas nécessaire de supprimer les données en double, vous devez utiliser UNION ALL pour améliorer l'efficacité de la requête.
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!