PostgreSQL удаление дубликатов данных

Для удаления будем использовать системную колонку ctid, которая поможет в идентификации одинаковых значений в таблице.
Для примера создадим таблицу example.
# create table example(val int);

Добавим одинаковых значений
# insert into example values (10), (1), (1), (20), (10);
INSERT 0 5

Выборка с использованием ctid.
# select ctid, * from example;
 ctid  | val
-------+-----
 (0,1) |  10
 (0,2) |   1
 (0,3) |   1
 (0,4) |  20
 (0,5) |  10
(5 rows)

Удаляем дубликаты с помощью подзапроса, который определяет наименьшее ctid для значения val.
delete from example where ctid in (select min(ctid) from example group by val having count(*) > 1);

# select ctid, * from example;
 ctid  | val
-------+-----
 (0,3) |   1
 (0,4) |  20
 (0,5) |  10
(3 rows)

Дополнительная информация