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;