如果我的头衔伤了你的头......我和你在一起。我不想深入了解为什么这个表存在,除了它是遗留系统的一部分,系统也进行“记录级别访问”(RLA),我知道这对许多表来说都是一个问题,无论如何RLA是提到因为添加一列会改变表格格式,然后很多很旧的程序将不再起作用......
显示添加PK已显示不会更改表格式。所以我被告知某些钥匙被保证是独一无二的,你知道什么......事实并非如此。现在我需要展示它们不在哪里。
我能想到的只有:
获取表匹配的交叉产品的主键。
以某种方式在结果集上获取一个计数列,以获得PK与其匹配的条目数。
对count count大于2的值过滤该结果集。
我要看看我是否充分扩展了PK,我实际上会找到一些独特的东西。
答案 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