我有一张这样的桌子:
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
请注意,在上述示例数据中,唯一可靠的是日期和用户。通过一个 90% 归咎于我的过度网站,我设法让用户复制他们的日常条目。在某些情况下,副本旨在更新其持续时间,在其他情况下,他们试图更改他们当天使用的 user_group,在其他情况下两者兼而有之。
幸运的是,我有一个相当强烈的想法(因为这是对旧系统的更新),哪些记录是正确的。(基本上,这一切都是为了尝试将旧数据库与新数据库无缝合并)。
不幸的是,我或多或少必须手动执行此操作,否则可能会丢失仅存在于一侧而不存在于另一侧的数据......
长话短说,我试图找出正确的 MySQL 查询来返回在任何给定日期为用户提供多个条目的所有记录。我一直在努力使用 GROUP BY 和 HAVING,但我能得到的最好的结果是每个重复项的两个重复项之一的列表,如果我确定这是错误的,那就太好了。
这是我最接近的:
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(user) > 1
ORDER BY event_date, user
对此的任何帮助都将非常有用。如果需要,我有每组重复项的用户/日期列表,所以我可以手动删除所有 400 个,但我更愿意一次看到它们。
谢谢!