Удалить дубликаты на основе двух столбцов SQL

Всем привет,

Мне нужно удалить дубликаты на основе двух столбцов. ANON ID и USER ID. У них много отношений. т.е. анонимный идентификатор может иметь несколько идентификаторов пользователя и наоборот. Мне нужно оставить только один экземпляр. Если анонимный идентификатор ИЛИ идентификатор пользователя появляется как дубликат, его необходимо удалить.

Пример данных

введите описание изображения здесь

Должны остаться только ряды 1, 4, 6, 7.

Я знаю, что могу использовать rownum () и удалить, где rownum> 1 для ОДНОГО повторяющегося столбца. Однако в этом случае мне нужно удалить любую строку, в которой уже появился ЛИБО ANON id или USER ID.

Любая помощь будет оценена.


person Steve    schedule 26.02.2018    source источник
comment
Я думаю, вы ищете group by на AnonId и UserId   -  person Jimmy    schedule 26.02.2018
comment
@TimBiegeleisen, как я уже упоминал, должны остаться только строки 1,4,6,7   -  person Steve    schedule 26.02.2018
comment
Какую базу данных вы используете?   -  person Tim Biegeleisen    schedule 26.02.2018
comment
@ Джимми просто группа не работает. строки 8 и 12 дублируются, потому что у них обоих есть идентификатор пользователя 9. группа по анонимному идентификатору и идентификатору пользователя не помечает эти две строки как дубликаты.   -  person Steve    schedule 26.02.2018
comment
@TimBiegeleisen amazon redhift   -  person Steve    schedule 26.02.2018
comment
Прочтите meta.stackoverflow.com/questions/285551/ и принятый ответ   -  person a_horse_with_no_name    schedule 26.02.2018


Ответы (1)


У вас может быть две функции rownum () и удаление в зависимости от результатов. Если по какой-то причине у вас не может быть 2 функций rownum в одном запросе, вы также можете использовать elastic_rank.

person GeorgiG    schedule 26.02.2018