Sql server 删除除最新记录之外的所有记录

Sql server 删除除最新记录之外的所有记录,sql-server,Sql Server,我有一个包含CreatedOn字段的表 除了最新的100万条记录(最新的基于CreatedOn),我如何删除所有记录 感谢诸位 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字段的表

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

感谢诸位

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
您将获得第一百万条记录的
CreatedOn
日期

现在删除所有具有小于此值的
CreatedOn
,例如

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
您将获得第一百万条记录的
CreatedOn
日期


现在删除所有小于此值的
CreatedOn
有多种方法可以实现这一点。请尝试以下不言自明的查询:

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

实现这一点有多种方法。请尝试以下不言自明的查询:

DELETE FROM tableName where PrimaryKeyColumn NOT IN (SELECT TOP 1000000 PrimaryKeyColumn FROM tableName ORDER BY CreatedOn DESC) 
如果在CreatedOn Desc之后的行_编号中添加另一个字段,则可以更好地控制如何处理领带


如果在CreatedOn Desc之后的行编号中添加另一个字段,您可以更好地控制如何处理领带。

太好了,什么阻止了您?这个问题仍然存在吗?你需要进一步的帮助吗?请注意,大多数回答SO问题的专业人士都渴望获得声誉积分。如果你也能看看你以前的问题,那就太好了。谢谢!太好了,是什么阻止了你?这个问题还有待解决吗?你需要进一步的帮助吗?请注意,大多数回答SO问题的专业人士都渴望获得声誉积分。如果你也能看看你以前的问题,那就太好了。谢谢!如果
CreatedOn
不是唯一的,您可能会考虑
TOP。。。带领带
。否则,这可能会导致(可能不重要的)随机behvaiour+我的side@ben,如果您发现此答案有帮助,请将其标记为答案并向上投票:)如果
CreatedOn
不是唯一的,您可能会考虑
TOP。。。带领带
。否则,这可能会导致(可能不重要的)随机behvaiour+我的side@ben,如果您觉得此答案有帮助,请将其标记为答案并投票:)