首页 > 数据库 > mysql教程 > 如何高效删除MySQL表中的重复行?

如何高效删除MySQL表中的重复行?

Mary-Kate Olsen
发布: 2025-01-23 13:43:08
原创
394 人浏览过

How to Efficiently Delete Duplicate Rows in a MySQL Table?

MySQL表中重复行删除方法

数据库管理中,消除重复数据是一项常见任务。在MySQL中,可以使用DELETE命令实现此目标。

以下是一个示例表:

<code class="language-sql">CREATE TABLE names (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);</code>
登录后复制

假设表中包含重复项:

<code class="language-sql">INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');
INSERT INTO names (name) VALUES ('msn');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');

SELECT * FROM names;</code>
登录后复制

要删除所有重复行(保留ID最小的行),请使用以下查询:

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

或者,要保留ID最大的行,请使用以下查询:

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

警告:执行任何删除查询之前,务必备份您的表,以避免意外数据丢失。

对于大型表,建议使用更快的INSERT和DISTINCT方法:

```sql CREATE TEMPORARY TABLE temp_names SELECT DISTINCT id, name FROM names; TRUNCATE TABLE names; INSERT INTO names (id, name) SELECT id, name FROM temp_names; DROP TABLE temp_names; ```

以上是如何高效删除MySQL表中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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