首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法删除重复的MySQL行

问无法删除重复的MySQL行
EN

Stack Overflow用户
提问于 2019-02-14 16:36:10
回答 1查看 34关注 0票数 0

在将数据从一个表复制到另一个表时,我遇到了一个问题,其中数据复制了两次,我试图删除重复的行,但不起作用

我已尝试运行此命令

代码语言:javascript
复制
DELETE t1 
  FROM users t1 
  JOIN users t2  
 WHERE  t1.id > t2.id 
   AND t1.email = t2.email;

,但即使在等待大约10分钟后,它也会冻结。

我有大约14,000个重复的行,所以我不确定这是否是问题的一部分

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 17:13:54

正如您提到的,您只有14k条记录,您可以通过添加唯一约束验证来创建一个新表,并将数据迁移到新表中。

--创建一个新表

代码语言:javascript
复制
CREATE TABLE new_table AS
SELECT a.* 
  FROM old_table a
  JOIN
     ( SELECT MIN(id) id
         FROM old_table
        GROUP
           BY email
     ) b
    ON b.id = a.id;

--添加约束

代码语言:javascript
复制
ALTER TABLE new_table ADD PRIMARY KEY(id);
ALTER TABLE new_table ADD UNIQUE(email);

--重命名并删除旧表。

代码语言:javascript
复制
DROP TABLE old_table;
RENAME TABLE new_table TO old_table;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54686138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档