Можете да опитате това да се изпълнява няколко пъти :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
Където няколко пъти е равен на максималния брой повторения, които имате в name
колона.
В противен случай можете да опитате тази по-сложна заявка:
delete from mytable where id in (
select id from mytable
except
(
select min(id)
from mytable
group by name
having count(1) > 1
union all
select min(id)
from mytable
group by name
having count(1) = 1
)
);
Изпълнението на тази заявка само веднъж трябва да изтрие всичко необходимо. Все пак не съм го пробвал...