2010-12-14 26 views
2

如果我的標題傷了你的頭......我和你在一起。我不想了解爲什麼這個表存在,除了它是遺留系統的一部分,系統也是「記錄級別訪問」(RLA),我知道這對許多表格來說都是問題,反正RLA是提到因爲添加一列會改變表格格式,然後很多很舊的程序將不再工作...SQL找到爲什麼PK canidate在無表的表上有重複

顯然添加一個PK已被證明不會改變表格格式。所以我被告知一定數量的鑰匙被保證是獨一無二的,那麼你知道些什麼......事實並非如此。現在我需要展示他們不在的地方。

所有我能想到的是:

獲取所在的表匹配它的主鍵的交叉產品。

以某種方式獲得一個計數列到結果集上的PK匹配自我的條目數。這一結果對於其中count ID大於2

我要看看我是否展開PK足夠我居然找到一些獨特的值設置

過濾器。

+0

你的意思是「添加一個行會更改表格式」或「添加一列將改變表格式」 – 2010-12-14 22:11:47

+0

啊......一列,我會解決這個問題。 – Quaternion 2010-12-14 22:40:26

回答

4

刪除約束/唯一索引,插入數據,然後運行該查詢:

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

其中col1, col2, ..., coln是你的關鍵(一列或多列)的列的列表。結果將是不止一次出現的密鑰列表,以及顯示它們發生頻率的計數。

+0

太容易了!我選擇了內部選擇......這太可怕了 – Quaternion 2010-12-14 22:37:43

2
SELECT * FROM (SELECT ID, COUNT(*) CNT FROM MY_TABLE GROUP BY ID) WHERE CNT > 1 
3
select col1, ... from tab group by col1, ... having count(*)>1; 
相關問題