首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >oracle中的max(rowid)是什么

oracle中的max(rowid)是什么
EN

Stack Overflow用户
提问于 2018-06-08 05:20:44
回答 2查看 6.2K关注 0票数 2

下面的查询是删除SALES_DETAILS中的重复行,但是max(rowid)是什么?

delete SALES_DETAILS
  where rowid not in (select max(rowid)
                      from sales_details
                      group by txt_id,customer_id);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-08 05:30:39

ROWID是Oracle的伪列,它保存特定行的地址。它让数据库定位行。您通常不会在表结构中看到它,但它就在那里并保持隐藏状态。这并不意味着你不能使用它:-)

您的DELETE语句删除了表SALES_DETAILS中基于txt_id, customer_id对的重复行,就像您提到的那样。因此,这意味着它删除了重复项,但保存了组中rowid值最高的行。

请在documentation中查找它以获取更多信息。

票数 3
EN

Stack Overflow用户

发布于 2018-06-08 08:41:34

假设(通常)我们拥有的主要是“好的”数据,而不是很多重复的数据,那么移除它们可能会更有效地实现,方法是反转一下,找出重复的rowid,而不是不重复的,例如

delete from SALES_DETAILS
where rowid in (
  select rid
  from (
    select rowid rid, 
           row_number() over ( partition by txt_id,customer_id order by rowid ) as r
    from SALES_DETAILS
     )
    where r > 1
  )

这里也有一段视频解释了这一点

https://www.youtube.com/watch?v=Y_m39BySTDU&list=PLJMaoEWvHwFIUwMrF4HLnRksF0H8DHGtt&index=19

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50750329

复制
相关文章

相似问题

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