没有源表,有没有办法在HANA中使用MERGE?

时间:2019-02-13 13:02:38

标签: merge hana

我正在尝试使用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

匹配后 ...

未配对时 ...

谢谢。

1 个答案:

答案 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}}命令是完全可能的,甚至可以在参考文档的命令示例中进行解释。