将数据从一个表复制到另一个表(其中数据复制了两次)时出现问题,我试图删除重复的行,但是它不起作用
我尝试运行此命令
DELETE t1
FROM users t1
JOIN users t2
WHERE t1.id > t2.id
AND t1.email = t2.email;
从命令行开始,但即使等待约10分钟,它也会冻结
我有大约14,000行重复,所以我不确定这是否可能是问题的一部分
答案 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;