日期:2014-05-17  浏览次数:20882 次

关于UPDATE SELECT的问题
有两个表
表A结构和值如下:
id       name1         age1       rowid
----------------------------
a         name1           12           1
b         name2           13           2

表B结构和值如下:
id       name2         age2       rowid
----------------------------
a         name3           22           1
c         name4           33           2

我现在想把表a的name1和age1更新成表b的name2和age2的值,
如果它们的id相同的话。

执行後的结果应该为
表A执行後的值如下:
id       name1         age1       rowid
----------------------------
a         name3           22           1
b         name2           13           2

请问这个SQL文在ORACLE中应该怎么写?
如下的写法在SQL   SERVER   中执行正确,
但是在ORACLE中报错:SQL语   命令未正确结束。

update   a   set   name1=name2,age1=age2  
from   a,b  
where   a.id   =   b.id   。




------解决方案--------------------
update a set (name1,age1) =(select name2,age2 from b where a.id=b.id)
where exists(select 1 from b where a.id=b.id);