删除日期为 older/newer 的重复行

Delete duplicate rows with older/newer date

我想删除具有重复 ID 的行,但只删除日期较晚的行。

示例: 突出显示的行是重复的,红色行是我要删除的行。

您可以在 delete:

中使用 where 子句
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;

根据您的 table 的大小,这可能有点矫枉过正,但您可以创建一个副本 table(不同的名称)作为 id 主键。执行 INSERT IGNORE INTO new table name SELECT * FROM old table ORDER BY ID...然后重命名 table 重命名后使副本 table 成为真实的 table你真正的 table 到其他东西