Home  >  Article  >  Database  >  Oracle 如何快速查找和删除重复记录

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

WBOY
WBOYOriginal
2016-06-07 16:55:15994browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn