有没有办法在没有源 table 的情况下在 HANA 中使用 MERGE?

Is there a way to use MERGE in HANA without a source table?

我正在尝试在 HANA 中使用 MERGE 插入或更新 table,而无需第二个 table 作为源。这必须在一个命令中完成,没有存储过程。此外,UPSERT 在这种情况下将不起作用。

我找到了 SQL 的答案,但 HANA 似乎不喜欢 USING 子句中的 VALUES。

这是上面 post 中 SQL 的答案:

合并 TARGET_TABLE 为我

USING (VALUES ('VALUE1','VALUE2')) 作为 s(COL1,COL2)

ON I.COL1 = s.COL1

当时匹配 ...

当不匹配时 ...

谢谢。

MERGE INTO 命令专为 ETL 类型用例而设计,其中来自一个 table 的数据应 合并 到另一个 table及其数据。通过像这样的子查询可以插入单个元组:

select * from t;  -- single integer column 'C'
insert into t values (2);

c
-
2

合并命令,插入 4 或更新匹配到 100

merge into t
      using (select 4 c from dummy) s 
      on t.c = s.c
   when matched then 
        update set t.c = 100
   when not matched then 
        insert values (s.c);

c
--
2
4  

运行再次合并命令

c
--
2
100        

所以,这很好用。

至于UPSERT/REPLACE命令使用VALUES是完全可行的,甚至在参考文档的命令示例中也有解释。