[英]I want to delete all the duplicates row in a MySQL database but it freezes
whenever I try a deleting operation on my phpmyAdmin MySQL database it freezes saying 'Error 504' once I run the command.每当我在我的 phpmyAdmin MySQL 数据库上尝试删除操作时,一旦我运行该命令,它就会冻结并显示“错误 504”。
The operation is like the following:操作如下:
DELETE t1 FROM downloads t1
INNER JOIN
downloads t2
WHERE
t1.ID < t2.ID AND t2.download = t2.download AND t2.place = t2.place AND t2.IP = t2.IP AND t2.data = t2.data
I have a table with dozens thousands entries and I just want to keep those with the highest ID and removing the otherd having lowest ID+same place+same IP+same data.我有一个包含数十万个条目的表,我只想保留那些具有最高 ID 的条目,并删除具有最低 ID+相同地点+相同 IP+相同数据的其他条目。
You can try below - your joining alias is not right you are trying t2.download = t2.download
and so on which is wrong您可以在下面尝试 - 您的加入别名不正确您正在尝试
t2.download = t2.download
等等这是错误的
DELETE t1
FROM downloads t1
INNER JOIN downloads t2
WHERE t1.ID < t2.ID
AND t1.download = t2.download
AND t1.place = t2.place
AND t1.IP = t2.IP
AND t1.data = t2.data
As per comments, if you can take the system off-line for a couple of minutes, then I'd do this:根据评论,如果您可以让系统离线几分钟,那么我会这样做:
-- After making a backup of downloads...
CREATE TABLE new_downloads AS
SELECT a.*
FROM downloads a
JOIN
( SELECT MAX(id) id
FROM downloads
GROUP
BY download
, place
, IP
, data
) b
ON b.id = a.id;
ALTER TABLE new_downloads ADD PRIMARY KEY (ID);
-- add any other indexes as required
DROP TABLE downloads;
ALTER TABLE new_downloads RENAME TO downloads;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.