搜索唯一键(不在元)

时间:2014-04-28 09:45:30

标签: sql-server tsql sql-server-2012 combinations

使用哪种SQL Server标准工具可以在表的数据中搜索唯一键(但不能在元声明中)?

P.S。我想自己写这样的剧本。也许你可以指出一个片段 t-sql中的组合学?例如从n乘1..n生成所有组合?

P.P.S关于那些没有看到它的人的问题复杂性。重要的是,我们不需要分析整个数据来消除这两个列是“唯一键”的催眠。对于真实世界,“类似报告”,即使在分析前两行后对数据进行排序,我认为,可以删除许多列组合。所以我觉得这样的算法应该具有'全表比较'阶段。但是,在“全表比较之前”阶段选择哪一部分数据是一个问题。我认为最好的候选人是'页面'...如果页面中的数据是唯一的,我们可以测试整个表的唯一性,如果不是唯一的(在页面上),那么转到下一列集。

1 个答案:

答案 0 :(得分:1)

select t1.col, count(*)
  from table t1 
  join table t2
    on t1.col = t2.col 
 group by t1.col 
having count(*) > 1

如果返回零行,那么它是唯一的

多个专栏

select t1.cola, t1.colb, count(*)
  from table t1 
  join table t2
    on t1.cola = t2.cola
   and t1.colb = t2.colb 
 group by t1.cola, t2.colb
having count(*) > 1