如何删除重复记录并仅保留1个具有最新dateUpdated字段的副本

时间:2014-10-25 12:39:32

标签: mysql sql

我需要删除所有具有相同stationId的重复记录,并且只保留一条具有最新dateUpdated

的记录

stationId是varchar(20) dateUpdated是日期时间

我通常删除重复以下内容,但这次我认为它不会起作用

ALTER IGNORE TABLE table ADD UNIQUE KEY idx1(title); 

2 个答案:

答案 0 :(得分:1)

我认为alter table语句不会删除记录;它只是忽略索引创建错误。

相反:

delete t
    from table t left join
         (select t.stationId, max(t.dateUpdated) as maxdu
          from table t
          group by t.stationId
         ) tmax
         on t.stationId = tmax.stationId and t.dateUpdated = tmax.maxdu
    where tmax.stationId is null;

答案 1 :(得分:0)

DELETE t1 FROM table t1, table t2 WHERE t1.dateUpdated < t2.dateUpdated AND t1.stationId= t2.stationId

Delete all Duplicate Rows except for One in MySQL?