Дублирующиеся строки в mysql - PullRequest
0 голосов
/ 22 апреля 2020

enter image description here Я получил таблицу USER, мне нужно дедуплицировать записи, когда возраст и имя поля совпадают, и в течение 5 минут сохранить самую раннюю запись: я получил sql вот так, но не работает как-то:


SELECT *
FROM user u1
WHERE NOT EXISTS (SELECT *
                  FROM user u2 
                  WHERE u2.name = u1.name AND u2.age = u1.age
                    AND u2.created_at > u1.created_at - INTERVAL 5 MINUTE)


1 Ответ

0 голосов
/ 22 апреля 2020

Мы могли бы попытаться сформулировать логи c как удаление любой записи, для которой мы можем найти другую запись с таким же возрастом и именем, со временем создания в течение 5 минут после того, как запись рассматривается для удаления.

DELETE
FROM user u1
WHERE EXISTS (SELECT 1 FROM user u2
              WHERE u2.age = u1.age AND u2.name = u1.name AND
                    TIMEDIFF(t2.create_time, t1.create_time) < '00:05:00');

Это предполагает, что вы действительно хотите удалить дубликаты записей. Если вы просто хотите выбрать, используйте логи c, предоставленные @Nick, которые очень похожи на мой запрос на удаление.

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