【问题标题】:how to evaluate table uniqueness without having a primary key如何在没有主键的情况下评估表的唯一性
【发布时间】:2015-05-25 17:53:08
【问题描述】:

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

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

有任何想法,支持该需求的 SQL 代码吗?

谢谢!

【问题讨论】:

  • 为什么要重新发明轮子?使用 PK 或唯一约束。
  • 你有多少列?多少行?

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


【解决方案1】:

您提到 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 部分前面,以根据该列组合找出重复项...

【讨论】:

  • 因为我没有权限这样做
  • 感谢 aram,我需要它来找出记录的粒度
  • 对复制的不感兴趣。说有一个这意味着我的评估错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-20
  • 2020-05-11
  • 2020-06-03
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多