[SQL ] 新增一筆資料

看板Database作者 (野火)時間13年前 (2012/10/30 17:03), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/3 (看更多)
原始資料為Excel檔, 其中有多筆資料是重覆的, (人工作業疏失) 請問有沒有辦法做到排除重覆的資料, 而只進一筆呢?? 重覆資料有 2 種情況: 1.從頭到尾該筆記錄完全重覆; 2.有編到流水號, 但是記錄內容卻是一模一樣; 我試過用 KEY值 找出與之相同的記錄, 並且 where KEY欄位 not in ('重覆資料KEY') 結果卻是只要重覆就沒有寫進資料庫了, 有沒有辦法讓 Insert 段只記錄一筆呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.59.164.121

10/30 18:10, , 1F
group?
10/30 18:10, 1F
目前的做法是撈出重覆資料 SELECT CLASSB_ID, CLASSM_ID, CLASSS_ID, COUNT(*) FROM HD.TMP_CALL_CLASS WHERE PROJECT_ID = 'TPE1103D01' GROUP BY CLASSB_ID, CLASSM_ID, CLASSS_ID HAVING COUNT(*) > 1 ORDER BY CLASSS_ID ASC CLASSB_ID CLASSM_ID CLASSS_ID COUNT(*) 1 B01 0000 0210 2 2 B01 0000 0220 2 3 B01 0000 0230 2 之後在前端程式判斷首筆寫入、重覆時不再寫入, 三個CLASS欄位皆要檢核是否重覆, 其中B、M可重覆, 但B、M欄位值也屬於S分類,故S各存在一筆B、M資料,但倘若S超過一筆也算重覆, 要做的事挺繁瑣就是了 -_-a

10/31 22:22, , 2F
SELECT DISTINCT B,C,D ...不要包含流水號那個欄位不就好了
10/31 22:22, 2F

10/31 22:41, , 3F
DISTINCT就是各取一筆了,故無法撈出重覆性資料
10/31 22:41, 3F

10/31 22:48, , 4F
除非你指的是 DISTINCT 搭配 MINUS 與自己比對,這段我已
10/31 22:48, 4F

10/31 22:50, , 5F
經寫過,是除了上述之外的第二種方式,但想利用SQL篩選
10/31 22:50, 5F

10/31 22:51, , 6F
直接撈資料排除重覆且僅寫入一次還是無解
10/31 22:51, 6F

10/31 23:03, , 7F
這段我放在公司沒帶回來,明天再貼
10/31 23:03, 7F
有關撈重覆資料,我個人試過是無法使用 DISTINCT 來處理資料 - -" 不過提供方法作為參考,也許可以做出來(?) 以下是另一段檢核, Excel與db比對撈出「未建檔」的B類: ※ 撈出 B 屬於資料庫總類中未建檔的資料 SELECT DISTINCT CLASSB_ID, CLASSB_NAME /*撈出B類及其名稱*/ FROM TMP WHERE CLASSB_ID IN (SELECT DISTINCT CLASSB_ID /*EXCEL檔B類*/ FROM TMP WHERE PROJECT_ID = 'TPE1103D01' /*專案編號*/ MINUS SELECT DISTINCT CLASS_ID /*資料庫總類*/ FROM CALL_CLASS WHERE PROJECT_ID = 'TPE1103D01' AND CLASS_MODE = '1') /*已啟用的類別*/ ※ 編輯: blReader 來自: 210.59.164.121 (11/01 12:44)
文章代碼(AID): #1GZvVc-F (Database)
文章代碼(AID): #1GZvVc-F (Database)