有两个表
表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 。

解决方案 »

  1.   

    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);
      

  2.   

    要是问问题的人都象你这样整的这么规范  别人回答起来也舒服  也喜欢回答呵呵对了,首先保证a表的ID和b表的ID关联查询出来的记录必须最多是1条
      

  3.   

    多谢回答,昨天试了半天也没有想到set (name1,age1) 这种写法,
    真是够笨的!