如何检查SQL中的数据级别是否正确?
我有一个表,其中有一些列。我想找出该表中的数据级别(可以唯一标识一行的列的组成)。是否有一些SQL查询可以帮助我做到这一点 我是SQL新手,我想到了这种方法,但我无法构建查询框架如何检查SQL中的数据级别是否正确?,sql,primary-key,Sql,Primary Key,我有一个表,其中有一些列。我想找出该表中的数据级别(可以唯一标识一行的列的组成)。是否有一些SQL查询可以帮助我做到这一点 我是SQL新手,我想到了这种方法,但我无法构建查询框架 按您认为是主键的列对数据进行分组 计算此分组数据中的行数 如果此数字等于初始表中的行数,则它是主键 您能帮我查询一下吗?给定创建表T(A号、B号、C号),然后您可以执行以下操作: select count(*) ,count(distinct A || ';' || B || ';' || C)
您能帮我查询一下吗?给定
创建表T(A号、B号、C号)
,然后您可以执行以下操作:
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年可能有的那样,将社会保障数字与公民(嗯,应税人,LOL)联系起来
那时,这些数字将不会被重用,因此您的查询将表明SSN足以唯一标识一行
当然,我们知道SSN加上出生日期(或者是别的什么?)是正确的关键。但是,如果表可以更改,则仅使用任意算法查看数据可能不起作用。您的意思是:我如何检查我希望成为PK的列集是否唯一标识所有行?第3点不一定正确。仅仅因为它们现在是独一无二的,并不能保证它们永远都是独一无二的。当前是否有主键?
从表组中选择col1、col2、col3、COUNT(*),col1、col2、col3的COUNT(*)大于1
将返回非唯一记录。如果您需要更多帮助,请编辑问题以标记适当的RDBMS,并添加数据样本。@Richard是的,我想这样做that@UnhandledExcepSean我不知道主键,即使它存在。给我一张桌子,我想找出答案。