Comment comparer les deux résultats de la requête pour l'égalité dans MySQL?
Je suis un utilisateur de MySQL. J'ai deux requêtes, et je tiens à de comparer leurs résultats pour l'égalité. Je voudrais le faire avec une seule requête qui permettrait le retour de vrai ou de faux, de sorte que chacun de mes deux requêtes seraient le plus susceptibles de prendre la forme de sous-requêtes.
Je voudrais éviter de retourner les résultats de deux requêtes et de les comparer au niveau de l'application, de couper vers le bas sur la communication et à améliorer les performances. Je voudrais aussi éviter de boucler sur les résultats au niveau base de données si possile, mais si il n'y a pas d'autre moyen, ainsi soit-il.
J'ai cherché haut et bas pour un exemple sur la façon de le faire, mais sont venus les mains vides. Certains exemple de code serait le plus apprécié, parce que je suis un débutant de programmation SQL. Merci!
Remarque: je suis à la recherche d'une solution qui serait de travailler avec tous les deux des requêtes arbitraires, donc je vais éviter de publier ce que mes deux requêtes.
Je n'ai rien. Comme je l'ai dit dans le post, je viens les mains vides
Peut-être fournir votre schéma de base de données et les données que vous cherchez à récupérer - il y a peut-être une meilleure alternative.
Êtes-vous limité à
MySQL
? Ce serait trivial dans SQL Server
ne commande/doublons question?
OriginalL'auteur Gwen Avery | 2011-07-08
Vous devez vous connecter pour publier un commentaire.
peut-être que si vous êtes allé avec l'UNION de TOUS et n'a
WHEN Count1 = count2 AND (Count1 *2) = Count3
vous n'auriez pas la Dupe problèmeLa logique fonctionne en raison de l'UNION de ne pas y compris les doublons. Sinon c'est de vérifier le nombre relatif de dossiers, pas le contenu.
Yep tu as raison
Est-ce à me dire que la requête 1 requête et les 2 m'a fait le même jeu de résultats (je veux dire le même nombre d'enregistrements, chaque enregistrement de
query1
a un même enregistrement dequery 2
et les champs de l'enregistrement a la même valeur)? Bien sûr, l'ordre n'est pas pris en considération ici.OriginalL'auteur MatBailie
Ce serait un peu plus facile si MySQL pris en charge
FULL OUTER JOIN
notez également que si les deux requêtes donner les mêmes résultats, mais dans un ordre différent qui sera considéré comme equivlantSi le count =0 alors les deux requêtes sont les mêmes
Aussi parce que je suis à l'aide de l'UNION doublons sont supprimés. Il y a donc un potentiel d'inexactitude.
Ce n'est pas vraiment universel, bien que depuis vous avez besoin de modifier la
JOIN
etWHERE
les clauses de tous les temps à l'intérieur des requêtes de changement.hmm si le commentaire est "la requête change chaque fois que la requête change" bon à savoir 😉 je suppose que les Dems solution nécessite moins de changements mais ses pas de plus universel.
Je ne pense pas que ça
désolé de n'être pas clair, juste remarqué OP demandé pour quelque chose d'aussi générique que possible.
OriginalL'auteur Conrad Frix
Vous ne pouvez pas faire MOINS de MySQL, donc voici comment le faire sans:
Donnée:
OriginalL'auteur Phil