是否有任何快速SQL查询来删除重复行

时间:2014-05-08 07:54:47

标签: php mysql sql

我正在尝试从数据库中删除重复的行,以便我使用此查询

DELETE  FROM data
WHERE data.ID NOT IN (
                     SELECT * FROM ( 
                                    SELECT MIN(ID)  FROM data GROUP BY Link
                                   ) AS p 
                      ) 

它工作正常,但问题是我的数据库有超过1百万行,所以当我使用它时需要花费4到5个小时的时间,它仍在加载...然后我只是关闭了选项卡。 所以如果有人有更好的疑问请告诉我。感谢Advace

表格结构 http://s29.postimg.org/bt57k5enb/image.jpg

1 个答案:

答案 0 :(得分:2)

一种解决方案可能是:


1)创建临时表
2)存储每个链接列的单个记录
3)截断"数据"表
4)改变"数据" table(添加UNIQUE KEY CONSTRAINT)
5)从临时表中重新导入数据表并删除tmp表

1&2) CREATE TABLE tmp AS SELECT * FROM data GROUP BY Link;
3) TRUNCATE TABLE data; -- disable foreign key constraints if any 
4) ALTER TABLE data ADD UNIQUE KEY data_link_unique(Link);
5) INSERT INTO data SELECT * FROM tmp;