如何在SQL中检查数据级别是否正确?

时间:2018-08-29 13:25:17

标签: sql primary-key

我有一个带有某些列的表。我想找出该表中的数据级别(可以唯一标识一行的列的组成)。是否有一些SQL查询可以帮助我做到这一点?

我是SQL的新手,我想到了这种方法,但是无法构建查询。

  1. 按您认为是主键的列对数据进行分组
  2. 计算此分组数据中的行数
  3. 如果该数目等于初始表中的行数,则它是主键

您能帮我查询吗?

1 个答案:

答案 0 :(得分:1)

给出create table T (A number, B number, C number),然后您可以执行以下操作:

select  count(*)
       ,count(distinct A || ';' || B || ';' || C)
       ,count(distinct A)
       ,count(distinct B)
       ,count(distinct C)
       ,count(distinct A || ';' || B)
       ,count(distinct B || ';' || C)
       ,count(distinct A || ';' || C)
from T

这具有只访问一次行的好处。

如果数据类型是字符,则必须仔细选择分隔符。

但是,假设您有一个表格,例如美国政府在1936年可能拥有的表格,该表格将社会保障号与公民(um,应税人群,大声笑)相关。

那时,这些数字将不会被重复使用,因此您的查询将表明SSN足以唯一标识一行。

当然,我们知道SSN加上出生日期(或其他日期?)才是正确的密钥。但是,如果表可以更改,则使用任意算法仅查看数据可能无法正常工作。