一、方法原理: 1、 Oracle 中,每一条记录都有一个rowid,rowid在整个 数据库 中是" name="description" />

删除数据表中的重复记录

发表于:2007-05-25来源:作者:点击数: 标签:
删除交通违章数据表中的重复记录(同一时间[haptime]、车号牌[numberplate]、处罚原因[reason]) MI LY: 宋体; mso-bidi-font-family: Arial; mso-bidi-font-size: 9.0pt"> 一、方法原理: 1、 Oracle 中,每一条记录都有一个rowid,rowid在整个 数据库 中是
删除交通违章数据表中的重复记录(同一时间[haptime]、车号牌[numberplate]、处罚原因[reason])
MILY: 宋体; mso-bidi-font-family: Arial; mso-bidi-font-size: 9.0pt">一、方法原理:
  1、Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,  rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上。
 
2、在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。

二、实现方法:
1、查询重复记录
select rowid,haptime,numberplate,reason from peclearcase/" target="_blank" >ccancy
--delete from peccancy6 peccancy6
where peccancy.rowid !=
(
 select max(rowid) from peccancy b
       where peccancy.haptime = b.haptime and
             peccancy.numberplate = b.numberplate and
             peccancy.reason = b.reason
)


2、删除重复记录
delete from peccancy peccancy
where peccancy.rowid !=
(
 select max(rowid) from peccancy b
       where peccancy.haptime = b.haptime and
             peccancy.numberplate = b.numberplate and
             peccancy.reason = b.reason
)

原文转自:http://www.ltesting.net