每当我在phpmyAdmin MySQL数据库上尝试执行删除操作时,一旦运行命令,它都会冻结并显示“错误504”。
操作如下:
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
我有一个包含成千上万个条目的表,我只想保留那些ID最高的表,而删除ID最低的+相同的地方+相同的IP +相同的数据。
答案 0 :(得分:0)
您可以在下面尝试-您的加入别名不正确,您正在尝试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
答案 1 :(得分:0)
根据评论,如果您可以让系统离线几分钟,那么我会这样做:
-- 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;