Ошибка 1093 мешает вашему подходу работать в MySQL. Обходной путь создания временной таблицы:
CREATE TEMPORARY TABLE table_purge SELECT MIN(id) id FROM table GROUP BY download_link;
DELETE FROM table where id NOT IN (SELECT id FROM table_purge);
Отредактировано, чтобы добавить альтернативный обходной путь, который не включает явную временную таблицу. Предположительно это работает, потому что план выполнения запроса естественным образом создает временную таблицу в любом случае:
DELETE table
FROM table
NATURAL JOIN (
SELECT id, download_link
FROM table
NATURAL JOIN (
SELECT MIN(id) min_id, download_link
FROM table
GROUP BY download_link ) table_min
WHERE id > min_id
) table_to_purge;