Sql使用联接更新列
有两个名为TEST1和TEST2的表,每个表都有两列,ID和NAME如下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
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;