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

如何检查SQL中的数据级别是否正确?,sql,primary-key,Sql,Primary Key,我有一个表,其中有一些列。我想找出该表中的数据级别(可以唯一标识一行的列的组成)。是否有一些SQL查询可以帮助我做到这一点 我是SQL新手,我想到了这种方法,但我无法构建查询框架 按您认为是主键的列对数据进行分组 计算此分组数据中的行数 如果此数字等于初始表中的行数,则它是主键 您能帮我查询一下吗?给定创建表T(A号、B号、C号),然后您可以执行以下操作: select count(*) ,count(distinct A || ';' || B || ';' || C)

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

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

  • 按您认为是主键的列对数据进行分组
  • 计算此分组数据中的行数
  • 如果此数字等于初始表中的行数,则它是主键

  • 您能帮我查询一下吗?

    给定
    创建表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我不知道主键,即使它存在。给我一张桌子,我想找出答案。