我正在尝试查看包含两列的表中是否存在'IMPORTID':'IMPORTID','STEP'。如果有,则将记录的STEP列增加1。
我刚刚使用硬编码值进行了测试,目前表中没有行。我期待以下SQL插入一个条目,但什么也没发生。
MERGE into TOSTEP t
USING
(SELECT 'Test' IMPORTID, 1 STEP FROM TOSTEP) s
ON
(s.IMPORTID = t.IMPORTID)
WHEN MATCHED THEN
update set t.STEP = s.STEP +1
WHEN NOT MATCHED THEN
insert (IMPORTID,STEP)
values ('Test',1);
答案 0 :(得分:3)
您正在将一个空表与自身合并。意味着using
子句中没有选择数据。将(SELECT 'Test' IMPORTID, 1 STEP FROM TOSTEP) s
更改为(SELECT 'Test' IMPORTID, 1 STEP FROM DUAL) s
,它应该有效
完整代码:
MERGE into TOSTEP t
USING
(SELECT 'Test' IMPORTID, 1 STEP FROM DUAL) s
ON
(s.IMPORTID = t.IMPORTID)
WHEN MATCHED THEN
update set t.STEP = s.STEP +1
WHEN NOT MATCHED THEN
insert (IMPORTID,STEP)
values (s.IMPORTID, s.STEP);