Oracle中删除重复记录行

Linux大全评论419 views阅读模式

主要是利用Oracle中记录行的rowid唯一。

去除重复记录(注意多次执行直到影响记录为0行)

  1. delete from WBH_TEMP2 where terminal_id in (   
  2. select terminal_id from WBH_TEMP2 group by terminal_id having count(*)>1)   
  3. and rowid in (select max(rowid) from WBH_TEMP2 group by terminal_id having count(*)>1)  

与上面一条等价,这条执行一次即可去除重复记录

  1. delete from WBH_TEMP2 where terminal_id in (   
  2. select terminal_id from WBH_TEMP2 group by terminal_id having count(*)>1)   
  3. and rowid not in (select min(rowid) from WBH_TEMP2 group by terminal_id having count(*)>1)  

大量数据的时候建议用CTAS

企鹅博客
  • 本文由 发表于 2020年4月26日 11:50:07
  • 转载请务必保留本文链接:https://www.qieseo.com/184220.html

发表评论