在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上;在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。
- 实现方法:
SQL> create table test( 2 name varchar(50),
3 sex varchar2(2)
4 ) 5 /
<br>
delete from test a where a.rowid!=(select max(rowid) from test b where a.name=b.nameand a.sex=b.sex);