今天整理用户系统的人员库,发现有很多人员有重复,需要删除掉这些冗余的人员信息;在网上查了一下,基本上有两种解决办法:在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,可以好好对比一下。我再这里不多说,你可以自己试试,琢磨琢磨。。
如果找到了不重复的记录,,那删除就很简单了,在这里就不多说了。。
希望可以帮助遇到此类问题的朋友,也希望大家能多留言交流。
Copyright © 2019- huatuo5.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务