从oracle表中删除记录,为所有用户保留最新的5条记录

时间:2016-08-12 13:45:05

标签: oracle oracle11g

我在Oracle 11g中有一个表,其中包含针对不同用户的多条记录,我希望从表中删除较旧的多余记录,并为特定用户保留5条最新记录。

实施例: 考虑下面的表截图,其中包含多个用户记录" JACK"," ANGEL"," MACK"我必须为每个基于列#34; CREATED_ON"的新用户保留5条记录(行)。并删除较旧的。

Demo Table

任何人都可以为我提供一个示例Oracle查询来执行上述方案。

先谢谢。

1 个答案:

答案 0 :(得分:3)

delete from testp 
        where id in 
        (    select id
             from
             ( 
                  select id, row_number() over ( 
                          partition by name order by created_on desc ) rn
                  from testp)
              where rn > 5
         )

假设:

  1. 在此示例中,表称为testp。
  2. ID是记录中的PK。