如何解决使用sql查找重复记录并在同一操作中删除
| 我正在使用以下SQL语句查找重复的记录: SELECT id,user_id,activity_type_id,source_id,source_type,COUNT(*) AS cnt
FROM activities
GROUP BY id,source_type
HAVING COUNT(*) > 1
但是,我不仅要在同一操作中查找,还要删除。
解决方法
delete from activities where id not in (select max(id) from activities group by ....)
感谢@OMG Ponies和他的其他文章在此处是修订的解决方案(但不完全相同)。我在这里假定不删除哪些特定行并不重要。同样假设“ 2”是主键。
在我的示例中,我只设置了一个额外的列“ 3”用于测试,但是可以通过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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。