重复数据删除大表中的条目,这些条目在多列中共享相同的值

时间:2014-11-05 00:20:44

标签: mysql ruby-on-rails

我们已经获得了这个最受欢迎的'表格,我们遇到了一个问题,该问题揭示了我们在userfavorite_typefavorite_id上没有唯一约束这一事实。我已经进行了一次迁移,它将为这3个添加一个索引,但它不会起作用,因为我们现有的数据具有相同的条目集。其中还有其他数据(updated_atcreated_atid)可以输掉,但却会造成不完美的匹配。

在rails(3.2.x)中是否有办法执行此操作,或者在(my)SQL中使用某种方法?

我知道我可以拉出所有这些,然后分组,并映射删除所有额外的元素,但它是一个非常大的表(1mil +),我们无法进行长时间的迁移。

1 个答案:

答案 0 :(得分:2)

将表结构复制到新表,添加唯一约束,然后插入所有记录。由于约束,重复项将失败。

CREATE TABLE tableTmp LIKE table;

添加约束,然后将所有记录插入临时表。

INSERT INTO tableTmp SELECT * FROM table

验证条目然后删除并重命名。

DROP TABLE table;
RENAME TABLE tableTmp TO table;