【问题标题】:Is there a way to use MERGE in HANA without a source table?有没有办法在没有源表的情况下在 HANA 中使用 MERGE?
【发布时间】:2019-07-07 07:51:05
【问题描述】:

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

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

SQL Server MERGE without a source table

这是上面帖子中 SQL 的答案:

按照我的方式合并 TARGET_TABLE

将 (VALUES ('VALUE1','VALUE2')) 用作 s(COL1,COL2)

开启 I.COL1 = s.COL1

当匹配然后 ...

当不匹配时 ...

谢谢。

【问题讨论】:

    标签: merge hana


    【解决方案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        
    

    所以,这很好用。

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

    【讨论】:

    • 谢谢!做到了。
    猜你喜欢
    • 2016-01-10
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多