Oracle 如何快速查找和删除重复记录

WBOY
发布: 2016-06-07 16:55:15
原创
987 人浏览过

今天整理用户系统的人员库,发现有很多人员有重复,需要删除掉这些冗余的人员信息;在网上查了一下,基本上有两种解决办法:在Or

今天整理用户系统的人员库,发现有很多人员有重复,需要删除掉这些冗余的人员信息;在网上查了一下,基本上有两种解决办法:

在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上;

在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。

如果检索出这些重复的记录:

1。select gh,xm from t_rygl_ryxx group by gh,xm having count(*) >1

这条语句可以找出重复记录中所有不重复的记录(呵呵,说起来真别扭)

2。select * from t_rygl_ryxx e1 where rowid not in (select max(rowid) from t_rygl_ryxx e2 where e1.gh=e2.gh)

这条语句可以找出所以重复的记录(包括重复记录中有重复的)。

以上两条语句,第条个语句执行效率非常高;第二条语句执行起来效率就相对慢了很多,但第二条记录很精确,查出来的记录可以直接导出到Excel,可以好好对比一下。我再这里不多说,你可以自己试试,琢磨琢磨。。。

如果找到了不重复的记录,,那删除就很简单了,在这里就不多说了。。。

希望可以帮助遇到此类问题的朋友,也希望大家能多留言交流。

Oracle 如何快速查找和删除重复记录

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板