Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否有任何快速SQL查询来删除重复的行_Php_Mysql_Sql - Fatal编程技术网

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”要使列唯一吗?请检查所附的表结构图像如下所示,编辑答案