goszowski
@goszowski
PHP Developer

Как удалить дублирующиеся записи в таблице базы данных Postgresql?

Есть условная таблица:
user_id | value_1 | value_2
100 | 50 | 1
100 | 50 | 2
101 | 50 | 1
101 | 50 | 2
102 | 50 | 2
102 | 50 | 3

Нужно удалить из таблицы строки так, чтобы осталось:
user_id | value_1 | value_2
100 | 50 | 1
101 | 50 | 1
102 | 50 | 2

Дубли по (user_id, value_1), удалить нужно запись где value_2 больше.
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
delete from t 
where 
  exists (
    select true 
    from t tdouble 
    where 
      t.user_id = tdouble.user_id 
      and t.value_1 = tdouble.value_1 
      and t.value_2 > tdouble.value_2
  );


run sql online
Ответ написан
iMedved2009
@iMedved2009
Не люблю людей
with t as(
SELECT user_id,  value_1, ROW_NUMBER () OVER (ORDER BY value_2) AS row_num FROM table group  by user_id,  value_1
)
delete from table using t where t.user_id = table.user_id and t.value_1 = table.value_1 and row_num>1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы