Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Sql Server 2008从顶部表中删除10条以上的记录?_Sql_Sql Server_Sql Delete - Fatal编程技术网

如何使用Sql Server 2008从顶部表中删除10条以上的记录?

如何使用Sql Server 2008从顶部表中删除10条以上的记录?,sql,sql-server,sql-delete,Sql,Sql Server,Sql Delete,如果数量超过10条记录,则旧记录将被清除。 也就是说,如果表中存储了15条记录,则首先要擦除5条记录 例如: "DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)" 在SQL Server中,您可以使用row_number()枚举值,然后使用where删除最早的值: with todelete as ( select t.*, row_number() over (order by id desc) as

如果数量超过10条记录,则旧记录将被清除。 也就是说,如果表中存储了15条记录,则首先要擦除5条记录

例如:

"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"

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

在SQL Server中,可以使用
行数()
枚举值,然后使用
删除最旧的值,其中

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

删除记录的方式真奇怪。你指的是较旧的记录。您的表中有日期记录吗?还提供一些示例数据。该表中是否有任何列指示将记录插入表中的顺序?这是删除记录的一种非常奇怪的方式您指向的是较旧的记录。您的表中有日期记录吗?还提供一些示例数据。该表中是否有任何列指示记录插入表中的顺序?