我通過從另一個可能有重複的表中選擇數據插入到表中。我以爲我的查詢是通過檢查該行是否已經存在,但我得到一個唯一的約束違規來處理。爲什麼我在插入時違反這個唯一約束條件
下面是查詢:
INSERT INTO FOLDER_USER (FOLDER_ID, USER_ID)
SELECT DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0'), USERID
FROM DATA1.FOLDERS F1
WHERE UPPER(OWNER) = 'ADMIN'
AND NOT EXISTS
(SELECT 1 FROM FOLDER_USER F2
WHERE DECODE(FOLDERID,'F10', '1','F565','2','F11', '3','F81', '4','0')= F2.FOLDER_ID
AND F1.USERID = F2.USER_ID);
- 表FOLDER_USER包含2列FOLDER_ID(編號),USER_ID (VARCHAR)和組合時,它們構成了主鍵
- 表文件夾包括2列FOLDERID和USERID(都是varchars)。在FOLDERID值 需要被插入到新表
嘗試加入了獨特的條款,以你的SELECT中:選擇唯一DECODE(... – Ollie
延是正確的'不exists'條款是沒用的,除非你已經有了解碼。值,可以按照Ollie所建議的'select unique'來使用,也可以使用'merge insert/update' – Raihan