2010-10-24 132 views
6

大家好简单的问题,但找不到任何东西。如何检查oracle中的所有字段是否都是唯一的?

谢谢

+1

所有栏位或全部记录? – Quassnoi 2010-10-24 20:35:16

+0

您需要提供更多信息。最低限度是您的表的结构/定义理想地作为CREATE TABLE语句。然后根据样本数据得到一些样本数据和结果。 – 2010-10-24 20:35:38

+0

表中的一列的所有字段 – Burjua 2010-10-24 20:38:55

回答

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

这将返回到你所有myColumn值与如果他们occurence的号码一起其发生次数高于1次(即它们不是唯一的)。

如果此查询的结果为空,那么您在此列中具有唯一值。

+0

好的,谢谢这是我需要的)))) – Burjua 2010-10-24 21:02:22

1

一种方法是创建一个唯一索引。 如果索引创建失败,你现有的重复信息,如果插入失败,它会产生重复...

2

一个简单的方法是使用DBMS_STATS分析表。完成之后,您可以查看dba_tables ...查看num_rows列。看看dab_tab_columns。比较每列的num_distinct与行数。如果您担心会影响巨大桌子上的生产系统,那么这是一个关于如何执行您想要的任务而不执行全表扫描的方法。如果你想得到直接的结果,那么通过用group by运行对表的查询来做别人的建议。

相关问题