0

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

但是我们如何在 Exasol 中做同样的事情呢?根据他们的文档,您需要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)

不能UPSERT喜欢其他 RDBMS 吗?

4

1 回答 1

0

您可以像这样重写查询:

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 表并保持正确的连接子句。

于 2021-12-15T10:43:54.453 回答