一个新表A 一个旧表B
要把B.NAME更新成A.NAME A。ID=B。ID
update a.name=(select b.name from a,b where a.id=b.id)
A B
id name id name
1 abc 1 aaa
2 abc 2 bbb
3 abc 3 ccc
4 abc
把A表的name 全部更新成B.name
A
name
aaa
bbb
ccc
abc这样如何实现。
要把B.NAME更新成A.NAME A。ID=B。ID
update a.name=(select b.name from a,b where a.id=b.id)
A B
id name id name
1 abc 1 aaa
2 abc 2 bbb
3 abc 3 ccc
4 abc
把A表的name 全部更新成B.name
A
name
aaa
bbb
ccc
abc这样如何实现。
update a set a.name=nvl((select nvl(b.name,a.name) from b where b.id=a.id),a.name)
nvl函数的作用是:对于a中存在而b中不存在的记录,a.name仍然保留原来值,就像你例中a表的第四行记录那种情况。
set a.name =
( select b.name
from B b
where b.id = a.id
)