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

WBOY
풀어 주다: 2016-06-07 16:55:15
원래의
988명이 탐색했습니다.

今天整理用户系统的人员库,发现有很多人员有重复,需要删除掉这些冗余的人员信息;在网上查了一下,基本上有两种解决办法:在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,可以好好对比一下。我再这里不多说,你可以自己试试,琢磨琢磨。。。

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

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

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿