我有一个这样的表:
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 个,但我更愿意一次看到它们。
谢谢!
最佳答案
这行得通吗?
SELECT event_date, user
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) > 1
ORDER BY event_date, user
让我失望的是你的 COUNT(user) 子句。
关于mysql - 在 MySQL 中并排显示所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392012/