gpt4 book ai didi

mysql - 使用sql查找重复记录并在同一操作中删除

转载 作者:行者123 更新时间:2023-11-29 03:12:20 25 4
gpt4 key购买 nike

我正在使用此 SQL 语句查找重复记录:

  SELECT id, 
user_id,
activity_type_id,
source_id,
source_type,
COUNT(*) AS cnt
FROM activities
GROUP BY id, user_id, activity_type_id, source_id, source_type
HAVING COUNT(*) > 1

但是,我想在同一个操作中不仅要查找,还要删除。

最佳答案

从 id 不在的事件中删除(从事件组中选择 max(id) ...)


感谢@OMG Ponies 和他在此处发布的另一篇文章是修改后的解决方案(但不完全相同)。我在这里假设哪些特定行未被删除并不重要。还假设 id 是主键。

在我的示例中,我只是设置了一个额外的列 name 用于测试,但它可以通过 GROUP BY 子句轻松扩展到更多列。

DELETE a FROM activities a 
LEFT JOIN (SELECT MAX(id) AS id FROM activities GROUP BY name) uniqId
ON a.id=uniqId.id WHERE uniqId.id IS NULL;

关于mysql - 使用sql查找重复记录并在同一操作中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com