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
) 子句。 忽略此条件可能会导致删除表中所有行。
替代方案:
为了获得更高的性能,请考虑使用以下INSERT
和DISTINCT
查询:
<code class="language-sql">INSERT INTO tempTableName (cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
随后,您可以删除原始表并重命名临时表。 此方法避免了直接删除数据,从而提高了效率和安全性。
以上是如何在保留一条记录的同时高效删除MySQL中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!