删除具有较旧/较新日期的重复行

时间:2018-12-16 16:34:38

标签: sql sybase sybase-ase

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

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

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以在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;

答案 1 :(得分:0)

这可能是过大的,具体取决于您的表有多大,但是您可以创建一个重复的表(不同的名称),使id为主键。。do INSERT IGNORE INTO新表名SELECT * FROM old table ORDER BY ID。 ..然后对表进行重命名,然后将您的真实表重命名为其他名称,从而使重复表成为真实表