如何删除 N 个最旧的条目。我的Sybase有限。我需要编写一个存储过程,它接受数字 X,然后只在表中保留 X 个最新条目。
例如: 假设ID是自动递增的。它越小,该条目就越旧。
ID Text
=========
1 ASD
2 DSA
3 HJK
4 OIU
我需要一个像这样执行的程序。
execute CleanUp 2
结果将是
ID Text
=========
3 HJK
4 OIU
最佳答案
注意:SQL Server 语法,但应该可以工作
Delete from TableName where ID in
(select top N ID from TableName order by ID )
如果您希望 N 作为参数,则必须构造语句字符串并执行它
declare @query varchar(4000)
set @query = 'Delete from TableName where ID in '
set @query = @query + '(select top ' + @N + ' ID from TableName order by ID )'
exec sp_executesql @query
关于t-sql - 删除表中 N 个最旧的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797609/