如何在Oracle中检查所有字段是否唯一?

10

如何在Oracle中检查所有字段是否唯一?


1
你需要提供更多的信息。最基本的是你的表的结构/定义,最好是一个CREATE TABLE语句。然后提供一些样本数据和你期望从这些样本数据中得到的结果。 - user330315
表中一个列的所有字段 - Burjua
@Burjua,请修改你的问题措辞,使其更加清晰明了。这是一个非常重要的数据库问题,但表述不够清晰。 - Honza Zidek
3个回答

36
SELECT myColumn, COUNT(*)
FROM myTable
GROUP BY myColumn
HAVING COUNT(*) > 1

如果一个列中的值只出现一次(即具有唯一性),则此查询将返回该列中所有myColumn值以及它们出现的次数。如果一个值出现的次数大于1,则返回该值和它出现的次数。

如果此查询的结果为空,则该列具有唯一值。


3
一种简单的方法是使用DBMS_STATS分析表。分析后,您可以查看dba_tables...查看num_rows列。然后查看dab_tab_columns。将每个列的num_distinct与行数进行比较。这是一种迂回的方法,可以在不对巨大表上的生产系统产生影响的情况下完成您想要的操作,而无需执行完整的表扫描。如果您想要直接结果,请按照其他人建议的方式针对表运行查询并进行分组。

1
一种方法是创建唯一索引。 如果索引创建失败,则存在重复信息,如果插入失败,则会产生重复...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接