2

如果我的头衔让你头疼……我和你在一起。我不想解释为什么这个表存在,除了它是遗留系统的一部分,系统也做“记录级访问”(RLA),我知道这对于许多表来说都是一个问题,无论如何 RLA 是提到是因为添加一列会改变表格格式,然后许多非常旧的程序将不再工作......

显然,添加 PK 不会改变表格格式。所以有人告诉我,保证一组特定的键是唯一的,那么你知道什么......它不是。现在我需要展示他们不在的地方。

我能想到的只有:

获取表与主键匹配的叉积。

不知何故,在结果集中获得一个计数列,以获取 PK 与其自身匹配的条目数。

为 count id 大于 2 的值过滤该结果集。

我要看看我是否充分扩展了 PK,我实际上会找到一些独特的东西。

4

3 回答 3

4

删除约束/唯一索引,插入数据,然后运行此查询:

SELECT col1, col2, ..., coln, COUNT(*)
FROM your_table
GROUP BY col1, col2, ..., coln
HAVING COUNT(*) > 1

键中的列列表在哪里col1, col2, ..., coln(一列或多列)。结果将是多次出现的键列表以及显示它们出现频率的计数。

于 2010-12-14T22:08:51.147 回答
3
select col1, ... from tab group by col1, ... having count(*)>1;
于 2010-12-14T22:10:16.850 回答
2
SELECT * FROM (SELECT ID, COUNT(*) CNT FROM MY_TABLE GROUP BY ID) WHERE CNT > 1
于 2010-12-14T22:09:46.680 回答