2017-12-15 2 views
1

테이블에 행을 삽입하고 싶습니다. col1 , col2 조합이 테이블에 존재하는지 확인하고 싶습니다. 데이터를 삽입 할 필요가없는 경우, 아래에 나와있는 것과 같은 쿼리를 작성했지만 작동하지 않습니다. 일부 도움이 될 수 있습니다. 그런SQL을 사용하여 테이블에 행을 삽입하지 마십시오.

INSERT INTO TABLE1 (COL1 , COL2 , COL3, COL4) 
VALUES (1234 , 4567 , 'test_name_int' , 'test_disp_name') 
WHERE NOT EXISTS (SELECT * FROM TABLE1 WHERE COL1 = 1234 and COL2 = '4567'); 

답변

1

아마 뭔가 :

Insert Into TABLE1 
Select 1234 , 4567 , 'test_name_int' , 'test_disp_name' 
From Dual 
WHERE NOT EXISTS (SELECT * FROM TABLE1 WHERE COL1 = 1234 and COL2 ='4567') 
+0

col1과 col2를 고유하게 정의하여 의도하지 않은 복제본이 삽입되지 않도록 할 수도 있습니다. –

+1

당신이 놓친 ")". – rakhi

2

MERGE INTO는 또 다른 좋은 옵션입니다. 필요한 경우 업데이트를 수행 할 수도 있습니다.

원본과 대상의 col1, col2가 일치하는지 확인합니다. 그렇지 않은 경우 insert입니다. 필요하면 WHEN MATCHED THEN UPDATE을 사용할 수도 있습니다.

MERGE INTO TABLE1 d 
    USING (SELECT 1235 COL1, 
        4568 COL2, 
        'test_name_int' COL3, 
        'test_disp_name' COL4 
       FROM DUAL) s 
     ON (d.COL1 = s.col1 AND d.COL2 = s.COL2) 
WHEN NOT MATCHED 
THEN 
    INSERT  (COL1, 
       COl2, 
       COl3, 
       COl4) 
     VALUES (s.COl1, 
       s.COL2, 
       s.COL3, 
       s.COL4); 
관련 문제