SQL聯合主鍵 查重


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類型的主鍵,重新組合就方便查詢了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM