テーブル内の重複データの削除
一、一部フィールドの重複データの削除
方法1:
方法2:
このような一時テーブルを作成してから削除する操作は、直接1つの文で削除するよりもずっと効率的です.
二、完全重複記録の削除
表の2行のレコードがまったく同じ場合、次の文で重複データを削除したレコードを取得できます.
select distinct*fromテーブル名
クエリーのレコードをテンポラリ・テーブルに配置し、元のテーブル・レコードを削除し、最後にテンポラリ・テーブルのデータを元のテーブルに戻すことができます.次のようになります.
テーブルの重複データを削除する場合は、まずテンポラリ・テーブルを作成し、重複データを削除したデータをテンポラリ・テーブルにインポートし、次に、テンポラリ・テーブルから正式なテーブルにデータをインポートします.
参照リンク:http://fanqiang.chinaunix.net/db/oracle/2006-02-15/3974.shtml
方法1:
delete from a
where 1, 2 in
(select 1, 2,count(*)
from group by 1, 2
having count(*) > 1)
方法2:
create table as
select a. 1,a. 2,MAX(a.ROWID) dataid from a GROUP BY a. 1,a. 2;
delete from a
where a.rowid !=
(
select b.dataid from b
where a. 1 = b. 1 and
a. 2 = b. 2
);
commit;
このような一時テーブルを作成してから削除する操作は、直接1つの文で削除するよりもずっと効率的です.
二、完全重複記録の削除
表の2行のレコードがまったく同じ場合、次の文で重複データを削除したレコードを取得できます.
select distinct*fromテーブル名
クエリーのレコードをテンポラリ・テーブルに配置し、元のテーブル・レコードを削除し、最後にテンポラリ・テーブルのデータを元のテーブルに戻すことができます.次のようになります.
CREATE TABLE AS (select distinct * from );
drop table ;
insert into (select * from );
drop table ;
テーブルの重複データを削除する場合は、まずテンポラリ・テーブルを作成し、重複データを削除したデータをテンポラリ・テーブルにインポートし、次に、テンポラリ・テーブルから正式なテーブルにデータをインポートします.
INSERT INTO t_table_bak
select distinct * from t_table;
参照リンク:http://fanqiang.chinaunix.net/db/oracle/2006-02-15/3974.shtml