Удалить дубликаты из PostgreSQL - PullRequest
0 голосов
/ 02 июля 2019

Я использую следующие query в PostgreSQL 10, чтобы найти дублирующие записи:

select
  column1, column2, count(*)
from mytable
  where column3 in ('yes', 'no')
group by column1, column2 having count(*) > 2;

Возможно ли PostgreSQL удалить дубликаты, кроме, конечно, первой каждой записи?

1 Ответ

1 голос
/ 02 июля 2019

Предполагая, что у вашей таблицы есть первичный ключ:

delete from mytable t
    where t.pk <> (select min(t2.pk)
                   from mytable t2
                   where t2.column1 = t.column1 and
                         t2.column2 = t.column2 and
                         t2.column3 in ('yes', 'no')
                  );
...