如何在执行合并时从连接表中获取数据?

时间:2015-10-15 07:22:18

标签: sql oracle oracle11g

我正在尝试将合并用于表。 我遇到的问题是从原始表中存在的代码中获取匹配的名称。我将提出我的代码并进一步解释:

MERGE INTO ResultTable R
USING InitialTable IT
ON (false)
WHEN MATCHED THEN -- do some stuff
WHEN NOT MATCHED THEN
INSERT (PrimaryKey,..., ThingFromJoinedTable)
VALUES (Seq.NEXTVAL, ..., ??? );

所以Initial表有一个外键,我想在Joined表中得到匹配的值。

任何人都知道如何操作,我尝试过使用连接的嵌套选择,但它给了我一个single-row subquery returns more than one row错误。

1 个答案:

答案 0 :(得分:1)

这样的事情:

MERGE INTO ResultTable R
USING ( SELECT it.this, it.that, third.this, third.that
        FROM   InitialTable it
        JOIN   ThirdTable third ON <your join criteria> ) SRC
/* depending on which columns you want for the join */
ON (r.col1 = src.col1 and r.col2 = src.col2)
WHEN MATCHED THEN -- do some stuff
/* depending on which columns you need to merge */
UPDATE SET
    r.col4 = src.col4,
    r.col5 = src.col5,
    etc.
WHEN NOT MATCHED THEN
INSERT (PrimaryKey,..., colThis, colThat, ....)
VALUES (Seq.NEXTVAL, ..., src.colThis, src.colThat );