關於 點部落 團隊
我們是一群普通的程式設計人員,在各自不同的領域發展, 由於對 IT 知識社群發展有一股的熱誠,所以我們一起創造了這個平台, 我們希望透過 點部落平台 能夠創造出更好的 IT 知識技術分享環境。 歡迎您參與點部落,也請給我們意見與指教,讓我們能夠持續的改善, 營造出更好的環境及平台。tw.dotblogs@gmail.com

常用連結

最新回應

這是比較早之前協助朋友發生的問題,是當資料表內重複的資料完全都一樣,
要把重複的資料,只要保留一筆就好的方式,
用的方法蠻硬幹的,整個處理的流程是
1.先找出重複的資料有哪些,重複多少筆
2.給予整個資料表一個 IDENTITY ,用來區分出既使資料重複,也有一個欄位不同。
3.再將有重複的資料排序好厚新增到暫存的資料表
4.透過 DELETE 指令,以暫存的資料表的serial(剛剛建立出來的Identity)取餘數的方式就能找到唯一的serial
來Delete重複的資料。

詳細請看下面之前寫下來的說明,野人獻曝,還請大家多多指教。


 

// 解決DB 中大內資料重複的問題又沒有任何件可以判斷的欄位問題

1.先下TSQL找出重複有多少資料

clip_image002

欄位都一樣的重複

clip_image004
2. 增加一個no 來做不同的判別

ALTER TABLE iboard

ADD serial INT IDENTITY

3.因此有了不同的seria.

clip_image006

4.找出有重複的資料群

SELECT DISTINCT(Board_ID),serial FROM iboard

WHERE board_id

IN (select board_id from iboard group by board_id having count(*)>1)

order by board_ID

clip_image008

--5.為了只選其中一個所有要再度編號 創立一個暫時純放的TABLE

DECLARE @TempDB TABLE

(no int IDENTITY(1,1),

bid varchar(50),

serial int

) -6.把資料排序後INSERT到tempDB

INSERT tempDB (bid,serial)

SELECT DISTINCT(Board_ID),serial FROM iboard

WHERE board_id

IN (select board_id from iboard group by board_id having count(*)>1)

order by board_ID

-- 7.可以看到他依序的排好

SELECT * FROM TempDB

clip_image010

--所以只要取餘數的方式就能找到唯一的serial 來Delete重複的table

--8. 刪除重複的Table方法

DELETE iBoard WHERE serial IN (

SELECT serial FROM TempDB

WHERE (no % 2 ) = 0 )

clip_image012

--9.把剛才增加的欄位刪除掉

ALTER TABLE iboard

DROP serial


DotBlogs Tags: 重複資料

回應

  • James Wu 2008/8/25 上午 11:27 回覆

    # re: [TSQL]解決資料表內資料重複問題

    不錯的方法。

*標  題:

*姓  名:

 電子郵件:

 個人網頁:

*回應

登入後使用進階評論

Please add 6 and 4 and type the answer here: