[SQL ] 新增一筆資料
原始資料為Excel檔,
其中有多筆資料是重覆的, (人工作業疏失)
請問有沒有辦法做到排除重覆的資料, 而只進一筆呢??
重覆資料有 2 種情況:
1.從頭到尾該筆記錄完全重覆;
2.有編到流水號, 但是記錄內容卻是一模一樣;
我試過用 KEY值 找出與之相同的記錄, 並且 where KEY欄位 not in ('重覆資料KEY')
結果卻是只要重覆就沒有寫進資料庫了,
有沒有辦法讓 Insert 段只記錄一筆呢??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.164.121
推
10/30 18:10, , 1F
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
10/31 22:22, 2F
→
10/31 22:41, , 3F
10/31 22:41, 3F
→
10/31 22:48, , 4F
10/31 22:48, 4F
→
10/31 22:50, , 5F
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)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):