如何使用 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。在这种情况下,这似乎是合理的。