Du kan prova att detta körs flera gånger :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
Där flera gånger är lika med det maximala antalet repetitioner du har i name
kolumn.
Annars kan du prova den här mer komplexa frågan:
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
)
);
Om du bara kör den här frågan en gång bör du radera allt du behöver. Har dock inte testat det...