有没有办法在没有源 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
是完全可行的,甚至在参考文档的命令示例中也有解释。
我正在尝试在 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
是完全可行的,甚至在参考文档的命令示例中也有解释。