Sie können dies mehrmals versuchen :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
Wo mehrmals entspricht der maximalen Anzahl von Wiederholungen, die Sie in name
haben Spalte.
Andernfalls können Sie diese komplexere Abfrage versuchen:
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
)
);
Wenn Sie diese Abfrage nur einmal ausführen, sollte alles gelöscht werden, was Sie benötigen. Habe es aber noch nicht ausprobiert...