Удалить повторяющиеся строки со старой / новой датой - PullRequest
0 голосов
/ 16 декабря 2018

Я хотел бы удалить строки с дублированными идентификаторами, но только одну с более поздней датой.

Пример: выделенные строки дублируются, а красные строки - это строки, которые я хочу удалить.

enter image description here

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Это может быть излишним в зависимости от размера вашей таблицы, но вы можете создать дублирующуюся таблицу (другое имя) сделать первичным ключом id .. do INSERT IGNORE INTO имя новой таблицы SELECT * FROM старой таблицы ORDER BY ID...то переименуйте таблицы, сделайте дубликат таблицы вашей реальной таблицей ПОСЛЕ переименования вашей реальной таблицы во что-то другое

0 голосов
/ 16 декабря 2018

Вы можете использовать предложение where в delete:

delete from t
    where t.datetime > (select min(t2.datetime)
                        from t t2
                        where t2.id = t.id
                       );

Если вы на самом деле не хотите удалять строки, а просто запускаете запрос и не видите красные:

select id, min(datetime)
from t
group by id;
...