是否有任何纯sql方法可以通过以下方式从日志表中删除数据
我有两张桌子。主表2。对数表 在主_表上定义了一个触发器,用于在删除和更新时将受影响的行复制到日志_表。在log_表中,除了两个额外的列pid(主键int)和updateat(时间戳)之外,其他列都是相同的 每个月cron作业都会从log_表中删除超过10天的所有记录。我需要对其进行更改以删除除每行最近10条记录之外的所有记录 我是通过linq完成的,在linq中我选择不同的id,然后我循环所有id并删除该id的所有数据,前10名除外。 这是可行的,只是它在生产环境中非常缓慢和不现实。我还尝试使用游标将此逻辑移动到存储过程中,但仍然很慢 我不确定,但我认为可以有其他方法来实现它,我不必循环 如果需要的话,服务器是mssql 2012。这就是您想要的吗是否有任何纯sql方法可以通过以下方式从日志表中删除数据,sql,sql-server,database,linq,Sql,Sql Server,Database,Linq,我有两张桌子。主表2。对数表 在主_表上定义了一个触发器,用于在删除和更新时将受影响的行复制到日志_表。在log_表中,除了两个额外的列pid(主键int)和updateat(时间戳)之外,其他列都是相同的 每个月cron作业都会从log_表中删除超过10天的所有记录。我需要对其进行更改以删除除每行最近10条记录之外的所有记录 我是通过linq完成的,在linq中我选择不同的id,然后我循环所有id并删除该id的所有数据,前10名除外。 这是可行的,只是它在生产环境中非常缓慢和不现实。我还尝试使
with todelete as (
select l.*,
row_number() over (partition by id order by updatedate desc) as seqnum
from log_table l
)
delete todelete
where seqnum > 10;
是的,这正是我想要做的,Thanx。