ITPub博客

首页 > 数字化转型 > ERP > 如何删除oracle库中相同的记录

如何删除oracle库中相同的记录

原创 ERP 作者:xypincle 时间:2017-02-19 21:31:05 0 删除 编辑

  1. 如何删除oracle库中相同的记录,但是保留重复记录中的一条记录:
  2. 解决方法:可以利用oracle中的rowid伪列来达到这个目的:

  3. 1.建立临时表,并将查询到的重复数据插入其中(是否可以建一个视图?):
  4. create table temp_woods as
  5. (select item_id,count(*) as rowcount from wooods group by item_id having count(*) > 1 );

  6. 2.查询相同的纪录:
  7. select a.*,a.rowid from woods a where a.rowid <> (select max(b.rowid) from woods b where b.item_id in (select item_id from temp_woods) where b.item_id = a.item_id) ;

  8. 3.删除重复的记录并保留其中rowid列最大的纪录:
  9. delete from woods a where a.rowid <> (select max(b.rowid) from woods b where b.item_id in (select item_id from temp_woods) where b.item_id = a.item_id) ;

  10. 4.删除临时表:
  11. drop table temp_woods cascade constraints ;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28878983/viewspace-2133898/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 字符数统计
下一篇: 中文年龄函数
请登录后发表评论 登录
全部评论

注册时间:2013-05-11

  • 博文量
    208
  • 访问量
    212345