如果不存在,我想在表中插入一行。
我想检查表中是否存在col1 , col2
组合。如果不是我必须插入数据。我写了一个如下的查询,但它不起作用。可以请一些人帮助我。
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');
答案 0 :(得分: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);
答案 1 :(得分: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')