MySQL更新表基于另一个表值

ver*_*esj 53 mysql join sql-update

我有两张桌子,

这是我的第一张桌子,

ID      SUBST_ID        CREATED_ID
1       031938          TEST123
2       930111          COOL123
3       000391          THIS109
4       039301          BRO1011
5       123456          COOL938
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

这是我的第二张桌子,

ID      SERIAL_ID       BRANCH_ID
1       039301          NULL
2       000391          NULL
3       123456          NULL
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

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

它需要在一个更新查询中完成所有操作.

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

所以第二个表将成为以下表,

ID      SERIAL_ID       BRANCH_ID
1       039301          BRO1011
2       000391          THIS109
3       123456          COOL938
...     ...             ...
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和指导.

Tom*_*Tom 119

UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
Run Code Online (Sandbox Code Playgroud)


Raf*_*shi 18

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

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
Run Code Online (Sandbox Code Playgroud)


Gon*_*o.- 5

我认为这应该有效

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
Run Code Online (Sandbox Code Playgroud)


Moh*_*ran 5

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='';
Run Code Online (Sandbox Code Playgroud)