知识大全 Oracle数据库删除重复记录的方法

Posted 语句

篇首语:越工作越能工作,越忙碌越能发明出闲暇。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库删除重复记录的方法相关的知识,希望对你有一定的参考价值。

Oracle数据库删除重复记录的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  做项目的时候 一位同事导数据的时候 不小心把一个表中的数据全都搞重了 也就是说 这个表里所有的记录都有一条重复的 这个表的数据是千万级的 而且是生产系统 也就是说 不能把所有的记录都删除 而且必须快速的把重复记录删掉 对此 总结了一下删除重复记录的方法 以及每种方法的优缺点    为了陈诉方便 假设表名为Tbl 表中有三列col col col 其中col col 是主键 并且 col col 上加了索引

   通过创建临时表

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

>

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

   利用rowid

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

>

  如果已经知道每条记录只有一条重复的 这个sql语句适用 但是如果每条记录的重复记录有N条 这个N是未知的 就要考虑适用下面这种方法了

   利用max或min函数

  这里也要使用rowid 与上面不同的是结合max或min函数来实现 SQL语句如下

>

  或者用下面的语句

>

  跟上面的方法思路基本是一样的 不过使用了group by 减少了显性的比较条件 提高效率 SQL语句如下

>

  还有一种方法 对于表中有重复记录的记录比较少的 并且有索引的情况 比较适用 假定col col 上有索引 并且tbl表中有重复记录的记录比较少 SQL语句如下 利用group by 提高效率

   Group By方法(我经常所用的一种方法)一 查数据    Select count(Num) max(Name) from student   列出重复记录 并列出属性    Group By Name    Having count(Num) >     按Name分组后找出表中Num列重复 即出现次数大于

cha138/Article/program/Oracle/201311/17877

相关参考

知识大全 Oracle删除重复记录

Oracle删除重复记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经过测试最高效的一种(万

知识大全 oracle删除重复记录方法

  删除重复记录方法实例  假设有一个员工表emp有字段emp_noDELETEFROMEMPE WHEREEROWID>(SELECTMIN(XROWID) FROMEMP

知识大全 Oracle中如何删除重复数据

Oracle中如何删除重复数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们可能会出现这种

知识大全 教你删除Oracle数据库中重复没用的数据

教你删除Oracle数据库中重复没用的数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在对数

知识大全 Oracle数据库重复数据删除的三种情况

Oracle数据库重复数据删除的三种情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在对数据

知识大全 删除完全重复和部分关键字段重复的记录

  重复记录分为两种第一种是完全重复的记录也就是所有字段均重复的记录第二种是部分关键字段重复的记录例如Name字段重复而其它字段不一定重复或都重复  第一种重复很容易解决不同数据库环境下方法相似  M

知识大全 如何删除excel表中的重复数据

如何删除excel表中的重复数据?要具体的数据---筛选---高级筛选----列表区域(选择你要选择的区域)----复制到(选择你要选择的区域)---勾画下面【选择不重复记录】----确定在ORACL

知识大全 查询及删除重复记录

  (一)查找表中多余的重复记录重复记录是根据单个字段(peopleId)来判断select*frompeoplewherepeopleIdin(selectpeopleIdfrompeoplegro

知识大全 oracle删除重复行

cha138/Article/program/Oracle/201311/18768

知识大全 有关重复记录地删除(SQLSERVER)

有关重复记录地删除(SQLSERVER)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下就重复记