我一直在寻找解决问题的方法,但是我找不到与我需要做的完全匹配的东西。
我有一个数据库的slug列有重复的条目。我需要删除所有重复项,但将该行的第一次出现保留在数据库中。我不能只保留id列的最低数字,因为它们在数据库中的顺序不同例如。。。

id         slug
---------  -----------
4          example-1
3          example-1
2          example-1
1          example-1
5          example-1

我需要保持slug的id为5,并删除所有其他字段的slug为示例1。这有可能吗?

最佳答案

不确定是否有语法可以一步完成。
但可以肯定的是,它可以通过两个简单的步骤来解决。
首先选择要保留在临时表中的行。

SELECT max(id), slug
FROM your_table
GROUP BY slug

然后只需删除不在临时表中的所有行:
DELETE FROM your_table WHERE id NOT IN (SELECT id FROM temp_table)

关于mysql - MYSQL删除重复记录但在数据库中保留第一次出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28678536/

10-15 10:46