Sql使用联接更新列

Sql使用联接更新列,sql,oracle,Sql,Oracle,有两个名为TEST1和TEST2的表,每个表都有两列,ID和NAME如下 TEST1 ID NAME 1 BOB 2 MIKE 3 TOM 4 TAMA TEST2 ID NAME 1 RAMIN 2 RAHIM 3 RONA 4 ZAK 6 ZENO 7 YOURA 8 SONE 如果表TEST1中的ID与表TEST2中的ID匹配,我想用TEST2 NAME列值更新表TEST1

有两个名为TEST1和TEST2的表,每个表都有两列,ID和NAME如下

TEST1
ID  NAME
1   BOB
2   MIKE
3   TOM
4   TAMA

TEST2
    ID  NAME
    1   RAMIN
    2   RAHIM
    3   RONA
    4   ZAK
    6   ZENO
    7   YOURA
    8   SONE
如果表TEST1中的ID与表TEST2中的ID匹配,我想用TEST2 NAME列值更新表TEST1 NAME列

运行下面的查询将导致此错误消息ORA-00933:SQL命令未正确结束

UPDATE tbl_test1 
SET    tbl_test1.NAME = tbl_test2.NAME 
FROM   tbl_test1 
   INNER JOIN tbl_test2 
           ON tbl_test1.id = tbl_test2.id 
最好在此处使用“合并”:


嗨,Mureinik,我搜索了stackoverflow,但找不到它,你能给我发一个链接吗?答案在哪里?因为我检查发现有点不同,无法解决我的问题。文档中的这篇简短文章显示了通过加入Oracle进行更新的正确语法,以及使用正确语法时可能遇到的最常见错误、原因和修复方法:现在抛出ORA-01779:无法修改映射到非键保留表的列更新选择t1.name t1name,t2.name t2name FROM TBL_TEST1 t1内部连接TBL_TEST2 t2 ON t1.ID=t2.ID set t1name=t2name@Mellad我已经更新了答案。请现在试一试
merge into tbl_test1 t
using tbl_test2 t2 on (t.id = t2.id)
when matched then
  update set t.name = t2.name;