Maison >base de données >tutoriel mysql >Résultats de la requête de fusion de données de requête MySQL

Résultats de la requête de fusion de données de requête MySQL

coldplay.xixi
coldplay.xixiavant
2021-03-17 09:32:554747parcourir

Résultats de la requête de fusion de données de requête MySQL.

  • En utilisant le mot-clé union, vous pouvez donner plusieurs instructions de sélection et combiner leurs résultats en un seul ensemble de résultats. Lors de la fusion, le nombre de colonnes et les types de données correspondant aux deux tables doivent être les mêmes. Utilisez le mot clé union ou union all pour séparer chaque instruction select.
  • Union n'utilise pas le mot-clé all. 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 :
select column,...from table1union [all]select column,... from table2

(recommandation d'apprentissage gratuite : tutoriel vidéo mysql)

[Exemple 1] 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 la suivante :

mysql> 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);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.06 sec)

Union combine les résultats de plusieurs instructions select dans un ensemble de résultats. Vous pouvez afficher les résultats de chaque instruction select séparément :

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price < 9.0;+------+---------+---------+| s_id | f_name  | f_price |+------+---------+---------+|  104 | lemon   |    6.40 ||  101 | apple   |    5.20 ||  103 | apricot |    2.20 ||  104 | berry   |    7.60 ||  107 | xxxx    |    3.60 ||  105 | melon   |    8.20 ||  101 | cherry  |    3.20 ||  105 | xbabay  |    2.60 ||  102 | grape   |    5.30 ||  107 | xbabay  |    3.60 |+------+---------+---------+10 rows in set (0.00 sec)mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+5 rows in set (0.00 sec)

Comme vous pouvez le voir dans les résultats de requête séparés, la première instruction select interroge les fruits dont le prix est inférieur à 9, et la seconde instruction select interroge les fruits fournis. par les fournisseurs 101 et 103 fruits.

  • Utilisez union pour séparer les deux instructions select. Après l'exécution, combinez les résultats de sortie en un seul ensemble de résultats et supprimez les enregistrements en double.
  • Utilisez Union All pour inclure les lignes en double. 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 les supprimer, vous pouvez utiliser Union All.

[Exemple 2] Interrogez les informations de tous les fruits dont le prix est inférieur à 9, interrogez les informations de tous les fruits dont le s_id est égal à 101 et 103, utilisez union all pour connecter les résultats de la requête, le SQL L'instruction est la suivante :

mysql> 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);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.00 sec)

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 connexion ne suppriment pas les lignes en double.

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 les ressources requises lors de l'exécution du all instruction de mot-clé Moins, alors utilisez-la autant que possible.
  • Lorsque vous êtes sûr 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 essayer d'utiliser uninon all pour améliorer l'efficacité des requêtes.

Plus de recommandations d'apprentissage gratuites associées : tutoriel mysql(vidéo)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer