Oracle删除表中的重复数据

时间:2021-03-03 06:16:04

Oracle数据库删除表中的重复数据,只保留其中的一条,以两个字段为例,提供两种方法

①、直接delete重复的数据

delete from table_name t1
where (t1.col1, t1.col2) in (select col1, col2 from table_name group by col1, col2 having count(*) > 1)
and t1.rowid in (select min(rowid) from table_name group by col1, col2 having count(*) > 1);

②、查询出所有不重复的数据,入到一张中间表中,然后把原表的数据清空,最后把中间表的数据入到原表中

--数据入到中间表中
insert into table_mid_name
select t1.* from table_name t1
where t1.rowid in (select min(rowid) from table_name group by col1, col2 ) ;
--清除原表数据
truncate table table_name ;
--数据入到原表中
insert into table_name select * from table_mid_name ;