我有一个包含CreatedOn字段的表。
除了最新的100万条记录(最新基于CreatedOn)外,我如何删除所有记录
由于
答案 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中添加另一个字段,您可以更好地控制如何处理关系。