如何使用 Sql Server 2008 从顶部 table 删除超过 10 条记录?
How to delete the more than 10 records from top table, using Sql Server 2008?
如果记录数超过10条,旧记录清理。
也就是说,如果table中存储了15条记录,则第5条记录被删除。
示例:
"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"
在SQL服务器中,您可以使用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
。在这种情况下,这似乎是合理的。
如果记录数超过10条,旧记录清理。 也就是说,如果table中存储了15条记录,则第5条记录被删除。
示例:
"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"
在SQL服务器中,您可以使用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
。在这种情况下,这似乎是合理的。