首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle:基于Created_On时间戳为用户删除保存最新n条记录的旧记录

问Oracle:基于Created_On时间戳为用户删除保存最新n条记录的旧记录
EN

Stack Overflow用户
提问于 2016-08-12 13:45:05
回答 1查看 210关注 0票数 1

我在Oracle 11g中有一个表,它为不同的用户提供了多条记录,我想从表中删除多馀的旧记录,并且只为特定用户保存5条最新记录。

示例:考虑下表中的屏幕截图,其中包含多条用户"JACK“、"ANGEL”、"MACK“的记录,我只需为每一个新用户保留5条记录(行),这些记录都是基于"CREATED_ON”列的,并删除旧的记录(行)。

​

​

有人能向我提供一个示例Oracle查询来执行上面的场景吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 14:08:42

代码语言:javascript
复制
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。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38919526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档