Anda dapat mencoba menjalankan ini beberapa kali :
delete from mytable where id in (
select max(id)
from mytable
group by name
having count(1) > 1
);
Dimana berkali-kali sama dengan jumlah pengulangan maksimum yang Anda miliki di name
kolom.
Jika tidak, Anda dapat mencoba kueri yang lebih kompleks ini:
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
)
);
Menjalankan kueri ini hanya satu kali akan menghapus semua yang Anda butuhkan. Belum dicoba...