首页 > 数据库 > mysql教程 > 如何在保留一条记录的同时高效删除MySQL中的重复行?

如何在保留一条记录的同时高效删除MySQL中的重复行?

Barbara Streisand
发布: 2025-01-23 13:37:10
原创
686 人浏览过

How Can I Efficiently Delete Duplicate Rows in MySQL While Keeping One Record?

MySQL重复行删除指南:高效保留唯一记录

本文讲解如何从MySQL表中删除重复数据,并保留每组重复数据中的一条记录。 虽然可以使用SELECT DISTINCT筛选出唯一值,但本文重点介绍如何使用DELETE命令实现这一目标。

重要提示:

在执行任何删除操作之前,务必备份您的表,以防止意外数据丢失。

保留ID最小的记录:

要保留重复项中ID最小的行,请运行以下SQL语句:

<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
登录后复制

保留ID最大的记录:

要保留重复项中ID最大的行,请运行以下SQL语句:

<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name;</code>
登录后复制

其他注意事项:

效率警告:

上述方法效率不高,可能会导致数据库连接超负荷。

完整性要求:

务必包含AND n1.id < n2.id (或 AND n1.id > n2.id) 子句。 忽略此条件可能会导致删除表中所有行。

替代方案:

为了获得更高的性能,请考虑使用以下INSERTDISTINCT查询:

<code class="language-sql">INSERT INTO tempTableName (cellId, attributeId, entityRowId, value)
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;</code>
登录后复制

随后,您可以删除原始表并重命名临时表。 此方法避免了直接删除数据,从而提高了效率和安全性。

以上是如何在保留一条记录的同时高效删除MySQL中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板