Puoi provare a farlo eseguendo più volte :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
Dove più volte è uguale al numero massimo di ripetizioni che hai in name
colonna.
Altrimenti, puoi provare questa query più complessa:
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
)
);
L'esecuzione di questa query una sola volta dovrebbe eliminare tutto ciò di cui hai bisogno. Non l'ho provato però...