update
a
set
a.name = (select b.name from b where a.id = b.id),
a.address = (select b.address from b where a.id = b.id);
对于 UPDATE 没有 WHERE 的
那么 相当于要 遍历 a 表的每一条记录
然后针对 a 表的每一条记录
都执行 (select b.name from b where a.id = b.id) 与`
(select b.address from b where a.id = b.id)
然后把结果,更新到 a.name 与 a.address
如果想 只更新 a 表中, 与 b 表有关联的
尝试
update
a JOIN b ON (a.id = b.id)
set
a.name = b.name,
a.address = b.address
看看
(我这里没装 Oracle , 就没办法给你测试了,不能保证执行成功啊)
按照你的数据,a表的ID=4的找不到b表的记录,所以就是空值,NULL赋给了a表字段