基于另一个表值的MySQL更新表

我有两张桌子,

这是我的第一张桌子,

ID SUBST_ID CREATED_ID 1 031938 TEST123 2 930111 COOL123 3 000391 THIS109 4 039301 BRO1011 5 123456 COOL938 ... ... ... 

这是我的第二张桌子,

 ID SERIAL_ID BRANCH_ID 1 039301 NULL 2 000391 NULL 3 123456 NULL ... ... ... 

我需要一些如何使用我的第一个表中的数据更新我的第二个表中的所有行。

这将需要在一个更新查询中完成。

SUBST_ID和SERIAL_ID都匹配,它需要从第一个表中获取created_id并将其插入到第二个表中。

所以第二张桌子会变成下面

 ID SERIAL_ID BRANCH_ID 1 039301 BRO1011 2 000391 THIS109 3 123456 COOL938 ... ... ... 

感谢您的帮助和指导。

 UPDATE TABLE2 JOIN TABLE1 ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID; 

除了汤姆的回答,如果你需要经常重复操作,并希望节省时间,你可以这样做:

 UPDATE TABLE1 JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID WHERE TABLE2.BRANCH_ID IS NULL 

我认为这应该工作

 UPDATE secondTable JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID SET BRANCH_ID = CREATED_ID 
 UPDATE TABLE2 JOIN TABLE1 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID=''; 

使用INNER JOIN

 UPDATE TABLE1 INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID; 

另一个替代解决scheme如下:在这里,我使用的是WHERE子句,而不是JOIN

 UPDATE TABLE1, TABLE2 WHERE TABLE1.SUBST_ID = TABLE2.SERIAL_ID SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;