查询Oracle中的重复数据(查询oracle重复数据)

大部分数据库管理系统,如Oracle,MySQL中都存在重复数据。如果存在大量重复记录,会降低数据库的性能,影响数据安全,增加数据库的管理难度,所以有必要对数据库进行清理,删除无用的重复数据,查询Oracle中的重复数据就显得尤为重要。

在查询Oracle中的重复数据,可以使用一些传统的sql语法,也可以引入窗口函数,以下是常用的查询方式:

1. 使用rowid和group by查询

rowid能够储存每一行记录的物理地址,我们可以使用group by进行查询,获取重复出现次数大于1的记录:

例如:

SELECT name, count(*) cnt

FROM table_name

GROUP BY ROWID HAVING COUNT(*) > 1;

2. 使用analytic查询

下面使用analytic函数,查询出现重复次数大于1的记录:

例如:

SELECT name, count(*) cnt

FROM table_name t

WHERE rowid ALL

(

SELECT rowid FROM

( SELECT rowid FROM table_name

GROUP BY name,rowid HAVING count(*)>1

)

)

GROUP BY name;

3.通过子查询查询

(1)找出重复记录

SELECT *

FROM table_name

WHERE name IN

(SELECT name FROM table_name

GROUP BY name

HAVING COUNT(*) > 1)

后面的查询结果中,可以看到有记录重复出现。

(2)找出未重复记录

SELECT *

FROM table_name

WHERE ROWID NOT IN

(SELECT ROWID FROM table_name

GROUP BY name,rowid

HAVING COUNT(*)>1)

最后,要提醒的是,Oracle的查询和删除任务都要慎重进行, 要三思而后行,以免误删有用的记录。


数据运维技术 » 查询Oracle中的重复数据(查询oracle重复数据)