我想从数据库表中删除旧数据。我想保留每个id的最后2条记录。例如,我有一个包含以下记录的表。
ID TIME DATA
1 2 3
1 3 4
1 4 5
2 2 3
2 3 4
2 4 5
2 5 6
我想做的结果是(必须按时间排序):
ID TIME DATA
1 3 4
1 4 5
2 4 5
2 5 6
感谢您的帮助。
答案 0 :(得分:0)
解决方案可能是:
select * from tab where (
select count(*) from tab as t
where t.ID = tab.ID and t.TIME >= tab.TIME
) <= 2;
了解更多详情,请访问:
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/