Tabla de actualización de MySQL basada en otro valor de tablas

Tengo dos mesas,

Aquí está mi primera mesa,

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

Esta es mi segunda mesa,

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

Necesito alguna forma de actualizar todas las filas dentro de mi segunda tabla usando datos de mi primera tabla.

Tendría que hacer esto todo en una consulta de actualización.

Tanto SUBST_ID como SERIAL_ID coinciden, necesita tomar el created_id de la primera tabla e insertarlo en la segunda tabla.

Entonces la segunda mesa sería la siguiente,

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

Gracias por su ayuda y orientación.

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

Además de la respuesta de Tom, si necesita repetir la operación con frecuencia y desea ahorrar tiempo , puede hacerlo:

 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 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=''; 

Creo que esto debería funcionar

 UPDATE secondTable JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID SET BRANCH_ID = CREATED_ID 

Usando INNER JOIN :

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

Otra solución alternativa como la siguiente: Aquí estoy usando la cláusula WHERE lugar de JOIN

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

Puedes usar esto también:

 update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID) 

pero con mi experiencia puedo decir que este camino es muy lento y no lo recomiendo!