Как сохранить цепочки дубликатов в базе данных, используя 2 столбца для поиска, но с цепочками записей с одинаковыми идентификаторами - PullRequest
0 голосов
/ 10 апреля 2019

Как сохранить только самую последнюю цепочку?

ID   Name  Chain_id  Chain_n
ABC  Juan  123       1
ABC  Juan  123       2
ABC  Juan  123       3
ABC  Juan  456       1
ABC  Juan  456       2
ABC  Juan  456       3
ABC  Juan  789       1 Keep this
ABC  Juan  789       2 Keep this
DEF  Ana   234       1
DEF  Ana   234       2
DEF  Ana   567       1 Keep this
GHI  Jill  345       1
GHI  Jill  345       2
GHI  Jill  678       1 Keep this
GHI  Jill  678       2 Keep this
GHI  Jill  678       3 Keep this

Пытался использовать общие запросы для дубликатов, но на основе только двух столбцов он удаляет все записи, кроме 1, и мне нужно сохранить всю цепочку

select * from t where (columns-to-be-compared) in (select columns-to-be-compared from t group by columns-to-be-compared having count(*) > 1 )

Мне нужно только сохранить последние 2 записи для ABC, например, 789,1 и 2, строки, отмеченные в таблице, цепочки с большим chain_id

1 Ответ

0 голосов
/ 10 апреля 2019

Мы использовали дополнительный столбец «Имя»

Delete from temptable where rowid in ( select rwid from ( select rowid rwid, row_number() over (partition by ID, Name order by chain_id desc) rn from temptable ) t where rn > 1 );

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