关于oracle中update的执行过程

2024-12-28 07:02:31
推荐回答(2个)
回答1:

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 , 就没办法给你测试了,不能保证执行成功啊)

回答2:

按照你的数据,a表的ID=4的找不到b表的记录,所以就是空值,NULL赋给了a表字段