将一个表的字段更新至另一个表
作者:bin工作中难免会遇到,要将一个表中的字段更新至另一个表中的相同字段里
这里提供一个简单的sql语句供大家使用
表a
id fieldA fieldB 1 2 null 11 22 null 111 111 111
表b
id fieldA fieldB 1 2 3 11 22 33
update a set a.fieldB = (select fieldB from b where a.id = b.id) where a.id in ( select tmp.id from ( select a.id from a,b where a.id = b.id ) tmp );
更新结果
表b
id b c 1 2 3 11 22 33 111 111 111
注意这里,使用tmp临时表的目的是因为mysql不允许:
先select出同一表中的某些值,再update这个表(在同一语句中)
否则出现的错误会为:
You can't specify target table 'stock_new' for update in FROM clause