J'ai une table comme ceci:Afficher tous les doublons, côte à côte, dans MySQL
Table eventlog
user | user_group | event_date | event_dur.
---- ---------- --------- ----------
xyz 1 2009-1-1 3.5
xyz 2 2009-1-1 4.5
abc 2 2009-1-2 5
abc 1 2009-1-2 5
Notez que dans les données ci-dessus de l'échantillon, la seule chose que la date est fiable et l'utilisateur. Grâce à un sur site qui est à 90% à blâmer, j'ai réussi à permettre aux utilisateurs de dupliquer leurs entrées quotidiennes. Dans certains cas, les doublons étaient censés être des mises à jour de leur durée, dans d'autres, c'était leur tentative de changer le groupe d'utilisateurs avec lequel ils travaillaient ce jour-là, et dans d'autres cas, les deux.
Heureusement, j'ai une idée assez forte (puisqu'il s'agit d'une mise à jour d'un système plus ancien) dont les enregistrements sont corrects. (Fondamentalement, tout cela est arrivé comme une tentative de fusionner l'ancienne DB avec la nouvelle DB).
Malheureusement, je dois plus ou moins le faire à la main, ou le risque de perdre des données qui n'existe que d'un côté et pas l'autre ....
Longue histoire courte, je suis en train de comprendre la bonne requête MySQL pour retourner tous les enregistrements qui ont plus d'une entrée pour un utilisateur à une date donnée. J'ai lutté avec GROUP BY et HAVING, mais le mieux que je peux obtenir est une liste de l'un des deux doublons, par doublon, ce qui serait génial si je savais bien que c'était le mauvais.
est ici le plus proche, je suis venu:
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(user) > 1
ORDER BY event_date, user
Toute aide à ce serait extrêmement utile. Si besoin est, j'ai la liste des utilisateurs/date pour chaque ensemble de doublons, donc je peux y aller à la main et supprimer tous les 400, mais je préfère les voir tous en même temps.
Merci!
J'ai eu un problème similaire et ont travaillé en sélectionnant la sortie d'un groupe par requête (comme le vôtre) dans une nouvelle table, jeter ensuite l'original Les données. –
Cela pourrait aider si je les "UNION" ensemble. Mais je dois en passer un par un pour déterminer lequel conserver et lequel supprimer. – Anthony