如果该数字超过10条记录,则旧记录清除。 这意味着,如果表中存储了15条记录,则要删除5条第一条记录。
示例:
"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"
答案 0 :(得分:6)
在SQL Server中,您可以使用row_number()
枚举值,然后使用where
删除最旧的值:
with todelete as (
select t.*, row_number() over (order by id desc) as seqnum
from t
)
delete from todelete
where seqnum > 10;
您的方法也有效。你可以这样做:
delete from t
where t.id not in (select top 10 t2.id from t t2 order by t2.id desc);
注意:这使用not in
,因此它假设id
永远不会NULL
。在这种情况下,这似乎是合理的。