2017-12-15 8 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); 
関連する問題