删除重复记录的方法的原理:
(1)在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在oracle中的哪一个数据文件、块、行上。
(2)在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。
临时表法:
sql>create table test as select distinct * from cz; (建一个临时表test用来存放重复的记录)
sql>truncate table cz; (清空cz表的数据,但保留cz表的结构)
sql>insert into cz select * from test; (再将临时表test里的内容反插回去)