如何在没有主键的情况下评估表的唯一性

时间:2015-05-25 17:53:09

标签: sql sql-server unique primary-key dml

我试图找到一种方法来分析没有定义主键的表唯一性。我试图找到一种没有数据库服务器资源的方法,更像是查询/只读,以便能够运行唯一性查询来找出创建唯一记录的列或复合列。

考虑在每列上运行几个不同的计数与计数,但它会非常沉重,并且不会解决键的组合。 可能会使用log2搜索,但似乎也很重

任何想法,SQL代码都支持这种需求?

谢谢!

1 个答案:

答案 0 :(得分:0)

提到GROUP BY和HAVING COUNT的一种方式> 1。 但我更喜欢的是找出表中是否有重复的行以及它们使用的是ROW_NUMBER:

WITH CTE AS
( SELECT col1, col2, col3 , RowNumber = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
FROM yourTable )

select * from CTE
WHERE RowNumber > 1

如果您有多个列作为键,您可以将所有列放在命令的PARTITION BY部分前面,以根据该列组合找出重复项...