Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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方法可以通过以下方式从日志表中删除数据_Sql_Sql Server_Database_Linq - Fatal编程技术网

是否有任何纯sql方法可以通过以下方式从日志表中删除数据

是否有任何纯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名除外。 这是可行的,只是它在生产环境中非常缓慢和不现实。我还尝试使

我有两张桌子。主表2。对数表 在主_表上定义了一个触发器,用于在删除和更新时将受影响的行复制到日志_表。在log_表中,除了两个额外的列pid(主键int)和updateat(时间戳)之外,其他列都是相同的

每个月cron作业都会从log_表中删除超过10天的所有记录。我需要对其进行更改以删除除每行最近10条记录之外的所有记录

我是通过linq完成的,在linq中我选择不同的id,然后我循环所有id并删除该id的所有数据,前10名除外。 这是可行的,只是它在生产环境中非常缓慢和不现实。我还尝试使用游标将此逻辑移动到存储过程中,但仍然很慢

我不确定,但我认为可以有其他方法来实现它,我不必循环

如果需要的话,服务器是mssql 2012。

这就是您想要的吗

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。