2014年最后一天,今天在給數據庫導入數據的時候,遇到一個問題,就是聯合主鍵去重。
事情是這樣的,現有一個表M,我想找個表中導入了許多數據,并需要將字段A(int)和B(int)聯合設置為主鍵。
但是在設置主鍵時,告知我有重復的內容,無法設置主鍵。
正常情況下,這兩個字段的組合是唯一的,不應該重復,為了找到重復數據,看看是什么方面出了問題。
采用distinct方式
但是發現
select count(distinct name, id) from A
這句話在SQL里不適用,http://www.cnblogs.com/rainman/archive/2013/05/03/3058451.html這個里面寫了,當然SQL里也會報錯。
所以只能將兩個字段進行轉換并重新組合成一個字段進行查詢
select cast(A as varchar(10))+cast(B as varchar(10)) newkey from M group by cast(A as varchar(10))+cast(B as varchar(10)) having count(cast(A as varchar(10))+cast(B as varchar(10)))>1
代碼本身沒有什么難度,就是在于要轉換思想,不能僅僅糾結于兩個int類型的主鍵,重新組合就方便查詢了。
新聞熱點
疑難解答