SQL查找为什么PK canidate在unkeyed表上有重复的SQL

时间:2010-12-14 22:07:13

标签: sql ibm-midrange db2-400

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

显示添加PK已显示不会更改表格式。所以我被告知某些钥匙被保证是独一无二的,你知道什么......事实并非如此。现在我需要展示它们不在哪里。

我能想到的只有:

获取表匹配的交叉产品的主键。

以某种方式在结果集上获取一个计数列,以获得PK与其匹配的条目数。

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

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

3 个答案:

答案 0 :(得分:4)

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

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

其中col1, col2, ..., coln是密钥中的列列表(一列或多列)。结果将是不止一次出现的键列表以及显示它们发生频率的计数。

答案 1 :(得分:3)

select col1, ... from tab group by col1, ... having count(*)>1;

答案 2 :(得分:2)

SELECT * FROM (SELECT ID, COUNT(*) CNT FROM MY_TABLE GROUP BY ID) WHERE CNT > 1