db2两张表关联更新

两张表a、b
table a table b
a1 b1
a2 b2
现要对a表的a1字段进行更新a1=b1
条件是,a2=b2。a1、a2、b1三个字段有重复值,b2是唯一的
实际上就是两张表关联,只要a2和b2是相等的就把b1字段的值赋给a1
句子应该怎样写?

以防关联不到的被更新为null,比较完整的写法为:
update a set a.a1=(select b1 from b where b.b2=a.a2)where exists
(select 1 from b where b.b2=a.a2);
为了防止多值(b2有重复值)更新不成功,可以写存储过程用for循环:
for t as
select b1,b2 from b
do update a
set a.a1=t.b1
where a.a2=t.b2

end for
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-13
UPDATE a SET a.a1 = (SELECT b1 FROM b WHERE b.b2 = a.a2)
相似回答