如果超过 50 个则删除条目

Delete entries if more than 50

例如我可以为同一台计算机设置 75 个条目,在这种情况下:clt98079

如果最后的条目超过 50 个(最旧的条目,按日期),我想删除它并保留最新的 50 个条目。我怎样才能完成我的交易?我正在按列检查 pc Hostname 和按列 CheckDate

的旧条目
begin tran
    if  (Select Count(*) FROM dbo.Clients WHERE Hostname='clt98079') > 50
    begin
        delete from dbo.Clients where ID in (
            select dbo.Clients.CheckDate from dbo.Clients
            /////not sure how to finish the last bit here/////
        )
    end

您的语法看起来像 SQL 服务器,它为您提供了可更新 CTE 的选项:

with todelete as (
      select c.*,
             row_number() over (partition by hostname order by checkdate desc) as seqnum
      from dbo.Clients c
      where hostname = 'clt98079'
     )
delete from todelete
    where seqnum > 50;

请注意,您可以删除 where 子句以保留所有主机名的最新 50 个。