Php 是否有任何快速SQL查询来删除重复的行
我正在尝试从数据库中删除重复的行,以便使用此查询Php 是否有任何快速SQL查询来删除重复的行,php,mysql,sql,Php,Mysql,Sql,我正在尝试从数据库中删除重复的行,以便使用此查询 DELETE FROM data WHERE data.ID NOT IN ( SELECT * FROM ( SELECT MIN(ID) FROM data GROUP BY Link ) AS p ) 它
DELETE FROM data
WHERE data.ID NOT IN (
SELECT * FROM (
SELECT MIN(ID) FROM data GROUP BY Link
) AS p
)
它工作正常,但问题是我的数据库有超过100万行,所以当我使用它时,它需要花费地狱般的时间,比如4到5个小时后,它仍然处于加载状态。。然后我就结账了。
所以,如果有人有更好的问题,请告诉我。谢谢你
表格结构
一种解决方案可以是:
1)创建临时表
2) 为每个链接列存储单个记录
3) 截断“数据”表
4) 更改“数据”表(添加唯一键约束)
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;
你桌子的结构是什么?是什么决定了一行是否是重复的?这只是您想要做的一次性事情吗?如果不是,为什么不首先防止重复数据进入数据库?您真的在使用
SQL Server
和MySQL
?我在phpmyadmin服务器上使用MySQL表名是数据列:ID、Link、Title、Word、SizeSo、“Link”要使列唯一吗?请检查所附的表结构图像如下所示,编辑答案