建表语句
CREATE TABLE Persons
(
PersonID int,           
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

insert into Persons values(1,'a','aa','aaa','aaaa');
insert into Persons values(1,'a','aa','aaa','aaaa');
insert into Persons values(1,'a','aa','aaa','aaaa');
insert into Persons values(1,'a','aa','aaa','aaaa');
insert into Persons values(2,'a','aa','aaa','aaaa');
insert into Persons values(2,'a','aa','aaa','aaaa');
insert into Persons values(3,'a','aa','aaa','aaaa');
insert into Persons values(3,'a','aa','aaa','aaaa');
insert into Persons values(4,'a','aa','aaa','aaaa');
insert into Persons values(5,'a','aa','aaa','aaaa');

select * from Persons order by PersonID;
    PERSONID    LASTNAME    FIRSTNAME    ADDRESS      CITY
1    1          a        aa          aaa      aaaa
2    1          a        aa          aaa      aaaa
3    1          a        aa          aaa      aaaa
4    1          a        aa          aaa      aaaa
5    2          a        aa          aaa      aaaa
6    2          a        aa          aaa      aaaa
7    3          a        aa          aaa      aaaa
8    3          a        aa          aaa      aaaa
9    4          a        aa          aaa      aaaa
10    5          a        aa          aaa      aaaa

1、查找表中多余的重复记录,重复记录是根据单个字段(PersonID)来判断。
select * from Persons where PersonID in ( select PersonID from Persons group by PersonID having(count(PersonID))>1);
order by PersonID;

PERSONID    LASTNAME    FIRSTNAME    ADDRESS    CITY
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa

2、删除表中多余的重复记录,重复记录是根据单个字段(PersonID)来判断,只留有rowid最小的记录。
select * from Persons
where PersonID  in (select  PersonID  from Persons  group  by  PersonID   having  count(PersonID) > 1)
and rowid not in (select min(rowid) from  Persons  group by PersonID  having count(PersonID )>1)
order by PersonID;

delete from Persons
where PersonID  in (select  PersonID  from Persons  group  by  PersonID   having  count(PersonID) > 1)
and rowid not in (select min(rowid) from  Persons  group by PersonID  having count(PersonID )>1)

PERSONID    LASTNAME    FIRSTNAME    ADDRESS    CITY
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa

3、查找表中多余的重复记录(多个字段)
select * from Persons a
where (a.PersonID,a.City) in  (select PersonID,City from Persons group by PersonID,City  having count(*) > 1)
order by PersonID;

PERSONID    LASTNAME    FIRSTNAME    ADDRESS    CITY
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
select * from Persons a
where (a.PersonID,a.City) in  (select PersonID,City from Persons group by PersonID,City having count(*) > 1)
and rowid not in (select min(rowid) from Persons group by PersonID,City having count(*)>1)
order by PersonID;

delete from Persons a
where (a.PersonID,a.City) in  (select PersonID,City from Persons group by PersonID,City having count(*) > 1)
and rowid not in (select min(rowid) from Persons group by PersonID,City having count(*)>1)

PERSONID    LASTNAME    FIRSTNAME    ADDRESS    CITY
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from Persons a
where (a.PersonID,a.City) in  (select PersonID,City from Persons group by PersonID,City having count(*) > 1)
and rowid not in (select min(rowid) from Persons group by PersonID,City having count(*)>1)
and rowid not in (select min(rowid) from Persons group by PersonID,seq having count(*)>1)
order by PersonID;

PERSONID    LASTNAME    FIRSTNAME    ADDRESS    CITY
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
1    a    aa    aaa    aaaa
2    a    aa    aaa    aaaa
3    a    aa    aaa    aaaa

oracel 查询删除重复记录的几种方法的更多相关文章

  1. oracle中查找和删除重复记录的几种方法总结

    平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结 ...

  2. spring+hibernate删除单条记录的几种方法

    spring+hibernate删除单条记录的几种方法

  3. ORACLE查询删除重复记录三种方法

    本文列举了3种删除重复记录的方法,分别是rowid.group by和distinct,小伙伴们可以参考一下.   比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完 ...

  4. ORACLE查询删除重复记录

     比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 复制代码 代码如下: select p1.*   from persons  p1,pers ...

  5. Oracle中查询和删除相同记录的3种方法

    --创建测试表 )); ,'); ,'); ,'); ,'); ,'); ,'); commit; select * from test; --查询相同记录 ); select id,name fro ...

  6. SQL Server 数据库查找重复记录的几种方法

    http://www.hanyu123.cn/html/c61/6790.html 一.查某一列(或多列)的重复值.(只可以查出重复记录的值,不能查出整个记录的信息) 例如:查找stuid,stuna ...

  7. python列表删除重复元素的三种方法

    给定一个列表,要求删除列表中重复元素. listA = ['python','语','言','是','一','门','动','态','语','言'] 方法1,对列表调用排序,从末尾依次比较相邻两个元素 ...

  8. 在MS SQL删除重复行的几种方法

    1.如果有ID字段,就是具有唯一性的字段         delect   table   where   id   not   in   (             select   max(id) ...

  9. Oracle 删除重复数据的几种方法

    去重 第一种:distinct create table tmp_t3 as select distinct * from t3; drop table t3; alter table tmp_t2 ...

随机推荐

  1. MySQL 百万级分页优化(Mysql千万级快速分页)

    以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...

  2. Promise详解

    前言 && 基础概念 Promise 是解决 JS 异步的一种方案,相比传统的回调函数,Promise 能解决多个回调严重嵌套的问题. Promise 对象代表一个异步操作,有三种状态 ...

  3. 分享Win7 将svn增加系统服务并成功启动的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/default7/article/details/32728717 依照网上搜索到的方法,结果一直提示 ...

  4. Wordpress主题站

    深度剖析WordPress主题结构 http://down.chinaz.com/try/201106/640_1.htm wordpress工作原理 http://blog.csdn.net/liu ...

  5. bzoj 1257 [CQOI2007]余数之和——数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( n\%i = n - \left \lfloor n/i \right \rfl ...

  6. couchdb的使用例子

    couchdb安装 sudo apt-get install erlang sudo apt-get install libmozjs185-dev libicu-dev 下载源码,编译安装 启动以后 ...

  7. Apache的下载安装(主要说的 64位)及问题

    本文转载自:http://blog.csdn.net/qq_15096707/article/details/47319545 今天重装完win10系统,就重新下载安装 Apache.虽说之前有安装过 ...

  8. eclipse 创建一个java项目 运行

    五.使用Eclipse 1)第一次打开需要设置工作环境,你可以指定工作目录,或者使用默认的C盘工作目录,点击 ok 按钮. 2)创建一个项目 3)输入项目名称,比如我输入Orz_Jlx,然后点击fin ...

  9. Web应用层协议---HTTP

    处于协议栈顶层的应用层协议定义了运行在不同端系统的应用程序进程如何相互传递报文.定义内容如下: 1.交换的报文类型.请求报文和响应报文. 2.各种报文类型的语法,如报文中的各个字段及这这些字段是如何描 ...

  10. hadoop中的一次集群任务执行超时问题查找过程

    问题背景 本次进行一个项目的重构,在某些活动数据量比较大的情况下,会偶尔出现1200s超时的情况,如下: AttemptID:attempt_1410771599055_11709_m_000033_ ...