删除重复记录的方法

有时候表中会有一些重复的数据,造成统计上的麻烦,需要删除它。整理出删除重复记录的方法
1首先建立表
create table TEST
(
  MESSAGEID    NUMBER(38) not null,
  CREATIONDATE CHAR(15) not null,
  MESSAGESIZE  NUMBER(38) not null,
  ID           NUMBER(5) default 0 not null
)

2.制一些重复记录

3 删除
  下面具体介绍删除操作
1.ORACLE 中的ROWID(唯一标示记录),可以根据ROWID的方法把重复记录删除
  sql
  先查询出重复记录
 select *
  from test
 where rowid in (select a.rowid
                   from test a, test b
                  where a.rowid > b.rowid
                    and a.messageid = b.messageid)

  确定需要删除记录
  删除
  
delete from test where rowid in (select a.rowid
                   from test a, test b
                  where a.rowid > b.rowid
                    and a.messageid = b.messageid)

2.用分组查询出重复记录
  先查询出重复记录
  
select *
   from test
  where id not in
        (select min(id) from test group by messageid having count(*) > 1)

  确定需要删除记录
   删除
 
delete from (
  select * from test where id not in
        (select min(id) from test group by messageid having count(*) > 1))


分组删除性能很低,介意不要使用

你可能感兴趣的:(oracle,sql)