我正在尝试使用HANA中的MERGE来插入或更新没有第二个表作为源的表。此操作必须在一个命令中完成,没有存储过程。另外,UPPERT在这种情况下将无法工作。
我找到了SQL的答案,但HANA似乎不喜欢USING子句中的VALUES。
SQL Server MERGE without a source table
这是上面文章中SQL的答案:
按原样合并TARGET_TABLE
使用(VALUES('VALUE1','VALUE2'))作为s(COL1,COL2)
开启I.COL1 = s.COL1
匹配后 ...
未配对时 ...
谢谢。
答案 0 :(得分:1)
MERGE INTO
命令是专门为ETL类型的用例设计的,其中应将一个表中的数据合并到另一个表中,并将其存储在其中。可以通过子查询插入一个元组,如下所示:
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
所以,这很好。
对于使用VALUES
的{{3}}命令是完全可能的,甚至可以在参考文档的命令示例中进行解释。