【发布时间】:2014-05-15 21:23:00
【问题描述】:
由于一个错误,我现在有可能某些表的行在主键列中有重复数据。
假设我的表 T 包含主键列 A、B、C 和 D,以及非 PK 列 E、F 和 G。为了使行唯一,A B C 和 D 都必须具有唯一值。我可以有 A 相同的行,或者 A 和 B 具有相同的值,甚至 A B 和 C。但是如果我有两行 A B C 和 D 都具有相同的值,那将是一个问题。
这是否是找到此类事件的正确方法:
SELECT A, B, C, D, COUNT(*) AS 'Duplicates' FROM T
GROUP BY A, B, C, D
HAVING COUNT(*) > 1
感谢您的帮助。
【问题讨论】:
-
你最初是如何得到重复主键的?不会约束抛出异常吗?也就是说 - 是的,上面的查询应该给你骗子。
-
你的意思是复合键还是其他表的外键?其他明智的查询看起来不错。
标签: sql sql-server