update tableA a,(select a.netbar_id,sum(a.reward_amt) reward_amt from tableB a group by a.netbar_id) b set a.transfer_amt=b.reward_amt where a.netbar_id=b.netbar_id;
执行该语句时要注意,因为
select a.netbar_id,sum(a.reward_amt) reward_amt from tableB a group by a.netbar_id
该临时表没有建索引,所以当记录比较多时,再执行update操作就会出现阻塞,因为执行update操作会锁表。
所以要改写成用脚本。
用脚本查询得到临时表,然后用循环把每条纪录的netbar_id取出来做为update的where条件,这样update执行的时间就会很短。
update与join的联合操作
UPDATE table A LEFT JOIN table B ON A.B_ID = B.B_ID SET A.A_NAME = B.B_NAME;