确定Oracle数据库中的表中重复的相关记录

数据库 Oracle
我们今天主要讲述的是如何确定Oracle数据库中的表中重复的相关记录,以及在实际操作中有那些的相关步骤是值得我们注意的。

以下的文章主要是介绍如何确定Oracle数据库中的表中重复的相关记录,以下我们就以表code_ref为例,来解说这个问题以及其实际的解决办法。以下就是文章的具体内容的介绍,望你会有所收获。

ERROR位于第1行:

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

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

一、自关联查询方法

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

二、GROUP BY/HAVING查询方法

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

三、Exception into子句

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

ERROR位于第2行:

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

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

【编辑推荐】

  1. 对Oracle数据字典的文档描述
  2. Oracle struts2中相关日期输入显示某些问题的方案
  3. 配置Oracle RAC中应注意的问题
  4. Oracle存储过程的编写经验总结
  5. Oracle 9i强大功能的体现

 

责任编辑:佚名 来源: 博客园
相关推荐

2011-05-17 11:23:02

Oracle数据库

2011-03-29 09:26:35

Oracle数据库

2011-03-04 17:30:42

Oracle数据库

2011-05-24 14:13:20

Oracle数据库

2010-04-13 10:23:40

Oracle数据库

2010-04-13 10:15:17

Oracle数据库

2009-01-11 17:32:03

Oracle数据库重复数据

2011-03-14 15:47:33

Oracle数据库

2018-09-11 17:13:23

MySQ数据库重复记录

2011-03-22 14:49:35

Oracle数据库重定义表

2009-05-13 10:28:30

OracleDUAL数据库

2010-04-21 14:45:39

Oracle数据库

2010-05-04 11:02:44

Oracle数据库

2010-04-30 16:19:08

Oracle数据库

2009-09-04 09:54:59

数据库名

2009-07-02 00:00:00

OOPOracle

2011-08-01 10:56:51

scott用户Oracle

2010-04-15 08:57:29

Oracle数据库

2010-08-04 11:38:24

Oracle数据库

2010-04-26 13:23:49

Oracle数据库
点赞
收藏

51CTO技术栈公众号