sql去除重復列(行)


最近做一個數據庫的數據導入功能,發現聯合主鍵約束導致不能導入,原因是源表中有重復數據,但是源表中又沒有主鍵,很是麻煩。經過努力終於解決了,現在就來和大家分享一下,有更好的辦法的可以相互交流。

有重復數據主要有一下幾種情況:

1.存在兩條完全相同的紀錄

   這是最簡單的一種情況,用關鍵字distinct就可以去掉

   例子: select distinct * from table(表名) where (條件)

2.存在部分字段相同的紀錄(有主鍵id即唯一鍵)

   如果是這種情況的話用distinct是過濾不了的,這就要用到主鍵id的唯一性特點及group by分組

   例子:

            select * from table where id in (select max(id) from table group by [去除重復的字段名列表,....])

3.沒有唯一鍵ID

   這種情況我覺得最復雜,目前我只會一種方法,有那位知道其他方法的可以留言,交流一下:

   例子:

           select identity(int,1,1) as id,* into newtable(臨時表) from table

           select * from newtable where id in (select max(id) from newtable group by [去除重復的字段名列表,....])

           drop table newtable


免責聲明!

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



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