删除日期为 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 到其他东西
我想删除具有重复 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 到其他东西