好的,所以如果您想了解背景故事,请查看我的上一个问题
找出我的哪些记录不是重复的很容易:
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
这将返回我所有的非重复项。所以我想我会将它们移到另一个名为“no_duplicates”的表中,然后将它们从原始表中删除。然后我可以在原始表中单独看到重复项,修复它们,然后将 no_dupes 添加回来。但是同时:
INSERT INTO no_duplicates
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
像魅力一样工作,以下引发错误:
DELETE
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
我的猜测是,虽然查询返回唯一的、已在表中的记录,但通过聚合函数删除是不合理的。这是可以理解的,除了我不知道我还能做些什么来确保只删除我移动的记录。我搜索并没有发现“在插入原始表中的记录之后”语法,我的猜测是它无论如何都会失败,原因与删除失败的原因相同。
那么,有人可以帮我找到丢失的部分吗?