使用哪种SQL Server标准工具可以在表的数据中搜索唯一键(但不能在元声明中)?
P.S。我想自己写这样的剧本。也许你可以指出一个片段 t-sql中的组合学?例如从n乘1..n生成所有组合?
P.P.S关于那些没有看到它的人的问题复杂性。重要的是,我们不需要分析整个数据来消除这两个列是“唯一键”的催眠。对于真实世界,“类似报告”,即使在分析前两行后对数据进行排序,我认为,可以删除许多列组合。所以我觉得这样的算法应该具有'全表比较'阶段。但是,在“全表比较之前”阶段选择哪一部分数据是一个问题。我认为最好的候选人是'页面'...如果页面中的数据是唯一的,我们可以测试整个表的唯一性,如果不是唯一的(在页面上),那么转到下一列集。
答案 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