ITPub博客

首页 > 数据库 > Oracle > 巧用ROWID去除重复项

巧用ROWID去除重复项

原创 Oracle 作者:riverdba 时间:2009-11-25 10:31:52 0 删除 编辑

工作需求遇到的问题,表a有类似如下数据:
号码 所属地市 终端机型
133****3672 杭州 HS-D90
133****3672 杭州 HS-D907
133****3672 杭州 LG-KV755
其中前2列 号码和所属城市都是一样的,但是终端机型有多个,请问如何删掉前2行,只保留最后一行?前2行是用户以前曾用过的机型,最后面的记录是用户目前使用的机型,所以需要保留最后的记录。其他号码还很多这样的情况,手动一个个删会疯掉的。。

创建测试环境进行实验,过程如下:
create table test (phone number,dishi varchar(10),jixing varchar(20))
insert into test
select 13333334444,'杭州','HS-D90' from dual
union
select 13333334444,'杭州','HS-D907' from dual
union
select 13333334455,'杭州','HS-D908' from dual
union
select 13333334455,'杭州','HS-D909' from dual
union
select 13333334455,'杭州','LG-KV755' from dual

select * from test

delete from test where rowid not in
(select max(rowid) from test group by phone,dishi)


总结:可以通过max(rowid)然后group by的方式找到最后面的记录,然后删除不是max(rowid)的记录即可!

[@more@]

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

请登录后发表评论 登录
全部评论

注册时间:2009-11-23

  • 博文量
    8
  • 访问量
    31052