开发者社区> 问答> 正文

有一种清除MySQL中重复条目的干净方法吗?

在一个表中,我有三列-id,name和count。很多名称列是相同的(由于早期缺少UNIQUE),我想解决此问题。但是,id列由其他(4或5,我认为-我必须检查文档)表使用来查找名称,只是删除它们会破坏事情。因此,有没有一种很好的,干净的说法:“查找所有相同的记录并将它们合并在一起”?

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 17:57:39 387 0
1 条回答
写回答
取消 提交回答
  • 这种问题时有发生。不,没有真正清洁的方法。您必须更改子表中依赖于父表中不需要值的所有行,然后才能消除父表中不需要的行。

    MySQL支持多表UPDATE和DELETE语句(与其他品牌的数据库不同),因此您可以执行一些漂亮的技巧,如下所示:

    UPDATE names n1 JOIN names n2 ON (n1.id < n2.id AND n1.name = n2.name) JOIN child_table c ON (n2.id = c.id) SET c.name_id = n1.id ORDER BY n1.id DESC; 在所有子表上完成此操作后,就可以使用MySQL的多表DELETE语法删除父表中不需要的行:

    DELETE FROM n2 USING names n1 JOIN names n2 ON (n1.id < n2.id AND n1.name = n2.name);

    2019-11-18 17:57:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像