2017-06-16 85 views
0

我有以下声明并需要创建更新。加入Oracle的更新

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,但我不知道如何创建更新

我希望有人能帮助我

+3

[ask] and [mcve]对提高你的问题可能有用 – Aleksej

+1

@TomNeumann用合适的查询编辑问题(最小但逻辑完整),以便给出适当的解决方案 – Spidey

+0

请看看我给你的链接发布更好的问题。另外,如上所述,如果您有更多有用的内容,请相应地编辑问题,而不是添加评论。另外,你有没有尝试过搜索?我想对“Oracle update join”这样的简单搜索会给出有用的结果 – Aleksej

回答

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; 

好运。

+0

感谢队友。我会试试看。但我需要在table2中合并,但这应该可行 –