如何确定Oracle数据库表中重复的记录

xiaolili199140

xiaolili199140

2016-02-19 17:22

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐如何确定Oracle数据库表中重复的记录,赶紧看过来吧!

  作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录。

  下面我们以表code_ref为例来讨论这个问题及其解决办法。

  ERROR位于第1行:

  ORA-01452: 无法 CREATE UNIQUE INDEX;找到重复的关键字

  Oracle系统提示不能对表code_ref创建一个唯一索引,因为系统发现表中存在重复的记录。我们必须首先找到表中的重复记录并删除该记录,才可以创建唯一索引。下面介绍三种不同的方法来确定库表中重复的记录。

  一、自关联查询方法

  Oracle系统中,对于所有的表都存在一个唯一的列,这就是rowid。对该列使用最大(max)或者最小(min)函数可以非常容易地确定重复的行。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  二、GROUP BY/HAVING查询方法

  利用分组函数GROUP BY/HAVING也很容易确定重复的行。以需要创建唯一索引的列分组并统计每组的个数,很明显如果组中记录数超过1个就存在重复的行。

  三、Exception into子句 

  采用alter table命令中的Exception into子句也可以确定出库表中重复的记录。这种方法稍微麻烦一些,为了使用excepeion into子句,必须首先创建EXCEPTIONS表。创建该表的SQL脚本文件为utlexcpt.sql。对于NT系统和UNIX系统,Oracle存放该文件的位置稍有不同,在NT系统下,该脚本文件存放在ORACLE_HOMEOra81rdbmsadmin目录下;而对于UNIX系统,该脚本文件存放在$ORACLE_HOME/rdbms/admin目录下。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  ERROR位于第2行:

  ORA-02299:无法验证(SYSTEM.I_CODE_REF)-未找到重复关键字

  下面将exceptions表和code_ref表通过rowid关联起来即可得到表code_ref中重复的记录。

展开更多 50%)
分享

猜你喜欢

如何确定Oracle数据库表中重复的记录

编程语言 网络编程
如何确定Oracle数据库表中重复的记录

删除Oracle数据库中重复的没用数据

编程语言 网络编程
删除Oracle数据库中重复的没用数据

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

删除mysql数据库中的重复数据记录

编程语言 网络编程
删除mysql数据库中的重复数据记录

更改Oracle数据库表的表空间

编程语言 网络编程
更改Oracle数据库表的表空间

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle数据库删除两表中相同数据的方法

电脑网络
Oracle数据库删除两表中相同数据的方法

Oracle数据库如何查询记录时给记录加锁

电脑网络
Oracle数据库如何查询记录时给记录加锁

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Position:Relative/Absolute无法冲破的等级

Position:Relative/Absolute无法冲破的等级

Google Page 实现你灵动的网页梦想

Google Page 实现你灵动的网页梦想
下拉加载更多内容 ↓