Удалить повторяющиеся данные на PostgreSQL - PullRequest
0 голосов
/ 03 мая 2020

Как удалить дубликаты данных в таблице, имеющей данные типа , подобные этим . Я хочу сохранить его с последними updated_at для каждого атрибута id.

Например:

attribute id | created at          | product_id
1            | 2020-04-28 15:31:11 | 112235
4            | 2020-04-28 15:30:25 | 112235
1            | 2020-04-29 15:30:25 | 112236
4            | 2020-04-29 15:30:25 | 112236

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете использовать условие EXISTS.

delete from the_table t1
where exists (select *
              from the_table t2
              where t2.created_at > t1.created_at
                and t2.attribute_id = t1.attribute_id);

Это удалит все строки, в которых существует другая строка с тем же атрибутом_идентификатора, имеющая большее значение созданного_атериала (таким образом, сохранится только строка с наибольшим значением created_at для каждого attribute_id). Обратите внимание, что если два значения created_at идентичны, для этого ничего не будет удалено attribute_id

Пример в сети

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...