Saf*_*afa 0 sql sql-server sql-delete
如果该数字超过10条记录,则旧记录清除.这意味着,如果表中存储了15条记录,则要删除5条第一条记录.
例:
"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"
Run Code Online (Sandbox Code Playgroud)
在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;
Run Code Online (Sandbox Code Playgroud)
你的方法也有效.你可以做:
delete from t
where t.id not in (select top 10 t2.id from t t2 order by t2.id desc);
Run Code Online (Sandbox Code Playgroud)
注意:这使用not in,因此它假设id从不NULL.在这种情况下这似乎是合理的.