【问题标题】:Exasol UPSERT without using a second table?Exasol UPSERT 不使用第二张桌子?
【发布时间】:2022-01-18 11:58:45
【问题描述】:

我在网上找不到有关此问题的任何信息。似乎 ORACLE 也有类似的问题,使用DUAL 处理,正如StackOverflow answer 中所建议的那样。

但是我们如何在 Exasol 中做同样的事情呢?根据their documentation,需要MERGE使用辅助表。

我尝试使用与 Oracle 相同的方法,但无济于事:

MERGE INTO TEST.TABLE USING SYS.DUAL ON "COLUMN_1" = "foo"
WHEN MATCHED THEN UPDATE SET "COLUMN_2" = "quux"
WHEN NOT MATCHED THEN INSERT ("COLUMN_1", "COLUMN_2") VALUES ("foo", "bar")

[2021-12-15 11:22:47] [0A000] Feature not supported: Merge using a system table as source that is no view. (Session: 1719203050222845952)

不能像在其他 RDBMS 中一样 UPSERT 吗?

【问题讨论】:

    标签: database rdbms upsert exasol


    【解决方案1】:

    您可以像这样重写查询:

    MERGE INTO TEST.TABLE
    USING (select 'foo' as s) s ON COLUMN_1 = s
    WHEN MATCHED THEN UPDATE SET COLUMN_2 = 'quux'
    WHEN NOT MATCHED THEN INSERT (COLUMN_1, COLUMN_2) VALUES ('foo', 'bar')
    

    这样您将消除 DUAL 表并保持正确的连接子句。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2014-07-13
      相关资源
      最近更新 更多