使用join更新Oracle

时间:2017-06-16 13:01:22

标签: sql oracle inner-join

我有以下声明,需要创建更新。

Select p.POS_NR, p1.VON_POS_NR 
FROM table1 p. inner join table2 p1 
ON p.Bestell_NR = p1.Vorgangs_NR 
and p.Bestell_pos = p1.Vorgangs_pos 
where NOT (p.POS_NR = p1.Von_Pos_NR)

现在我想等于p.POS_NR和p1.Von_POS_NR,但我不知道如何创建更新

我希望有人可以帮助我

1 个答案:

答案 0 :(得分:0)

您可以使用MERGE语句执行此操作。我假设TABLE1有一个名为KEY_FIELD的主键字段 - 您可以根据需要进行替换:

MERGE INTO TABLE1 t1
  USING (SELECT p.KEY_FIELD, p.POS_NR, p1.VON_POS_NR 
           FROM TABLE1 p
           INNER JOIN TABLE2 p1 
             ON p.BESTELL_NR = p1.VORGANGS_NR and
                p.BESTELL_POS = p1.VORGANGS_POS 
           WHERE NOT (p.POS_NR = p1.VON_POS_NR) d
    ON (d.KEY_FIELD = t1.KEY_FIELD)
  WHEN MATCHED THEN
    UPDATE
      SET t1.POS_NR = d.VON_POS_NR;

祝你好运。