Используйте оконную функцию
ROW_NUMBER() по ключам,которые должны быть уникальны:
ROW_NUMBER() OVER (
PARTITION BY email, phone
ORDER BY updated_at DESC
)
Первая строка в группе
(dup_rank = 1) - оригинал.Все остальные - реальные дубликаты, которые можно чистить.
Чтобы увидеть только те строки, которые должны быть удалены:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY email, phone ORDER BY updated_at DESC
) AS dup_rank
FROM users
) t
WHERE dup_rank > 1;
🔥 Подходит для очистки данных, поиска дубликатов, контроля миграций и проверки внешних интеграций.
➡️ SQL Ready | #совет
