除最高日期外删除所有行

时间:2017-09-13 20:19:02

标签: sql sql-server

我有一张看起来像这样的表。

ID | Create Date
---+-------------------------
1  | 2007-06-12 15:44:10:000
1  | 2007-07-12 15:44:10:000
2  | 2007-06-12 15:44:10:000
2  | 2007-07-12 15:44:10:000
2  | 2007-08-12 15:44:10:000
3  | 2007-09-12 15:44:10:000
4  | 2012-06-12 15:44:10:000
5  | 2011-07-12 15:44:10:000

我需要保留max(createdate),同时删除所有其他行。我还需要保留ID为3,4,5的行。

任何帮助都会很棒。

注意:这有点抽象。实际的表有数百万个ID,它们有许多具有不同创建日期的重复ID

2 个答案:

答案 0 :(得分:3)

您可以使用file_writer.writerow(['Paul','Mary']) 来识别具有最新日期的记录,并删除其余记录:

ROW_NUMBER()

答案 1 :(得分:0)

试试这个:

DELETE FROM table
WHERE ID NOT IN (SELECT ID FROM table 
WHERE ID IN 3, 4, 5 OR ID = (SELECT ID FROM table as a
                             WHERE createdate = (SELECT MAX(createdate) FROM 
                              table as b WHERE a.ID = b.ID)))