删除最新的记录

时间:2016-05-19 13:21:06

标签: sql-server

我有一个包含CreatedOn字段的表。

除了最新的100万条记录(最新基于CreatedOn)外,我如何删除所有记录

由于

3 个答案:

答案 0 :(得分:2)

有多种方法可以实现这一目标。尝试以下自我解释的查询:

DELETE FROM tableName where PrimaryKeyColumn NOT IN (SELECT TOP 1000000 PrimaryKeyColumn FROM tableName ORDER BY CreatedOn DESC) 

答案 1 :(得分:1)

类似

SELECT TOP 1 y.CreatedOn FROM (SELECT TOP 1000000 x.CreatedOn 
                               FROM MyTable AS x 
                               ORDER By x.CreatedOn DESC) AS y
ORDER BY y.CreatedOn ASC

您将获得第100万条记录的CreatedOn日期。

现在删除所有CreatedOn小于此

的人

答案 2 :(得分:0)

With cteOrdered AS
(
Select ID, CreatedOn, Row_Number() Over (Order By CreatedOn Desc) SortOrder
    From Table_1
)
Delete T1
    From Table_1 T1
    Join cteOrdered O On O.ID = T1.ID
    Where SortOrder > 4

如果在CreatedOn Desc之后在row_number中添加另一个字段,您可以更好地控制如何处理关系。