重複レコードの削除方法

1406 ワード

時には表の中に重複したデータがあり、統計上のトラブルを引き起こし、削除が必要です。重複記録の削除方法を整理します。
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))
グループの削除性能が低いので、使わないようにしてください。