删除超过N天的不同条目

时间:2014-09-11 07:54:26

标签: sql oracle sybase sybase-ase

我必须删除超过N天的每个帐户+ date_added组合的数据。 在N天之前,这意味着删除上述组合的前N个不同出现次数

DELETE
FROM tbl_check 
   WHERE
   N  <  (SELECT count(DISTINCT date_added) + 1
   FROM tbl_check b
   WHERE b.ACCOUNT_NUMBER = tbl_check.ACCOUNT_NUMBER
     AND tbl_check.date_added < b.date_added)

此查询必须在Sybase ASE和Oracle上运行。我已经写了上面的查询,它试图模拟DENSE_RANK并基于排名成功删除。

然而,它不使用任何索引,也是执行FTS的相关查询。此表中可能有数千行。 enter image description here

有一个复合PK,它是:FOREIGN_KEY_COL,ACCOUNT_NUMBER,date_added,.. 这个查询是否适用于该作业,或者我们可以对其进行改进,因为相同的查询必须对所提到的两个数据库都有效。

1 个答案:

答案 0 :(得分:0)

为什么不使用以下查询;

DELETE FROM tbl_check  where (getdate()-date_added)> N