我正在使用未定义主键或唯一键约束的MSSQL表。我认为有两个字段xId和yId,我相信它们在一起将是一个复合键,但是我想通过检查数据来确认这一点。

我在想,我应该能够编写一条SQL计数语句,将其与表上的记录总数进行比较,从而可以逻辑确定xId和yId(或第三列ID的组合)是否实际上可以充当组合键。但是,我很难提出正确的GROUP BY或其他类型的子句来确认或证明这一点。

有任何想法吗?

最佳答案

使用group byhaving:

select xid,yid
from table
group by xid,yid
having count(1) > 1

这将显示所有非唯一的对,因此,如果没有行返回,则它是一个很好的键。

10-05 19:29