首先要喊庆说一句,同一个表中出现重复数据是设计问题,应该为表建id,杜绝这个情况。
当然,如果已经存在这种情况,就需要郑散握通过定期任务来删除重复数据,以下是几种方法:
1、通过建立临时表来删除(以employee为例):
SQL>create table temp_emp as (select distinct * from employee)
SQL>truncate table employee; (清空employee表的数据)
SQL>insert into employee select * from temp_emp; (再将掘此临时表里的内容插回来)
2、在oracle中可以通过rowid来实现:
delete from employee where rowid not in (
select max(t1.rowid) from employee t1 group by
t1.emp_id,t1.emp_name,t1.salary
);