1

我已将我的问题归结为这段代码,这给了我关于重复键行的错误消息“ORA-00933:SQL 命令未正确结束”。

我试图插入行,除非它们有重复的键,在这种情况下我想更新它们。像insert...select重复键更新之类的东西。

我可以看到它一定是一个语法问题,但我通常不使用 SQL,因此感谢您的帮助。

insert into "tableB" ("col1", "col2")
select      "tableA"."colX", "tableA"."colY"
from        "tableA"
on duplicate key update "tableB"."col1" = "tableA"."colX";
4

1 回答 1

2

我会考虑使用MERGE

MERGE INTO tableB b
USING tableA a
    ON (b.col1 = a.colX)
WHEN     MATCHED THEN UPDATE SET b.col2 = a.colY
WHEN NOT MATCHED THEN INSERT( col1, col2 )
VALUES(a.colX, a.colY);

注意:这是假设您在两个表之间的键是 col1 和 colx。

于 2013-06-23T04:10:37.647 回答