我有一个带有某些列的表。我想找出该表中的数据级别(可以唯一标识一行的列的组成)。是否有一些SQL查询可以帮助我做到这一点?
我是SQL的新手,我想到了这种方法,但是无法构建查询。
您能帮我查询吗?
答案 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加上出生日期(或其他日期?)才是正确的密钥。但是,如果表可以更改,则使用任意算法仅查看数据可能无法正常工作。