oracle查找、删除重复记录Oracle认证考试

文章作者 100test 发表时间 2010:02:02 15:34:04
来源 100Test.Com百考试题网


  总结了一下删除重复记录的方法,以及每种方法的优缺点。

  假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引。

  1、通过创建临时表

  可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:

  creat table tbl_tmp (0select distinct* from tbl).

  truncate table tbl.//清空表记录

  insert into tbl 0select * from tbl_tmp.//将临时表中的数据插回来。

  这种方法可以实现需求,但是很明显,对于一个千万级记录的表,这种方法很慢,在生产系统中,这会给系统带来很大的开销,不可行。

  2、利用rowid

  在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同。SQL语句如下:

  0delete from tbl where rowid in (0select a.rowid from tbl a, tbl b where a.rowid


相关文章


oracle的外联接、交叉连接Oracle认证考试
ORACLE删除带有空格的表Oracle认证考试
oracle如何查看隐藏的参数Oracle认证考试
在命令行下进行Oracle用户解锁Oracle认证考试
oracle查找、删除重复记录Oracle认证考试
Oracle修改监听口令Oracle认证考试
Oracle11g闪回数据归档Oracle认证考试
Oracle中的Union、UnionAll、Intersect、MinusOracle认证考试
记录oracle数据库库表变动Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛