无法删除重复的MySQL行

时间:2019-02-14 08:36:10

标签: mysql

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

我尝试运行此命令

DELETE t1 
  FROM users t1 
  JOIN users t2  
 WHERE  t1.id > t2.id 
   AND t1.email = t2.email;

从命令行开始,但即使等待约10分钟,它也会冻结

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

1 个答案:

答案 0 :(得分:0)

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

-创建一个新表

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;

-添加约束

ALTER TABLE new_table ADD PRIMARY KEY(id);
ALTER TABLE new_table ADD UNIQUE(email);

-重命名并删除旧表。

DROP TABLE old_table;
RENAME TABLE new_table TO old_table;