Bir tabloda duplicate (tekrarlı) kayıtların silinmesi için aşağıdaki gibi bir sorgu çalıştırabilirsiniz:
DELETE FROM tablo_adi WHERE
id IN ( SELECT id FROM (SELECT id, ROW_NUMBER()
OVER (partition BY sutun_adı ORDER BY id) AS rnum
FROM tablo_adi) t WHERE t.rnum > 1);
Yukarıdaki örnekte id alanına göre en küçük olan değer bırakılmaktadır.
Bu sorgu için
https://wiki.postgresql.org/wiki/Deleting_duplicates adresine bakabilirsiniz.
Farklı kriterler kullanabilirsiniz. Örneğin name='Ali' olanlar için duplicated kayıtları silecekseniz aşağıdaki gibi kriteri ekleyebilirsiniz:
DELETE FROM tablo_adi WHERE name='Ali' and
id IN ( SELECT id FROM (SELECT id, ROW_NUMBER()
OVER (partition BY sutun_adı ORDER BY id) AS rnum
FROM tablo_adi where name='Ali' ) t WHERE t.rnum > 1);