update a as a set a.damage=(SELECT damage FROM b AS b WHERE b.id = a.id) where a.team_id=28;
这个是先执行的where,出来一个a.team_id=28的临时表,然后join b on b.id = a.id,然后再把damage update到a.damage么
这个是先执行的where,出来一个a.team_id=28的临时表,然后join b on b.id = a.id,然后再把damage update到a.damage么
MYSQL的执行顺序是。
1) 打开A表,找到 where a.team_id=28;的记录
2)取出符合条件的一条记录,然后进行 SELECT damage FROM b AS b WHERE b.id = a.id 此时的a.id 是第一条符合条件记录中的ID,
3) 得到值后进行 a.damage= 步骤2中得到的值。
4) 循环至步骤2,直至所有A中符合条件记录更新完毕。
update a inner join b on a.id = b.id set a.damage=b.damage where a.team_id=28;
效率如何,则建议自己测试一下。