Tabela de atualização do MySQL baseada em outro valor de tabelas

Eu tenho duas mesas

Aqui está minha primeira mesa

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

Esta é minha segunda mesa

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

Eu preciso de alguns como atualizar todas as linhas dentro da minha segunda tabela usando dados da minha primeira tabela.

Ele precisaria fazer isso tudo em uma consulta de atualização.

Ambos SUBST_ID e SERIAL_ID correspondem, ele precisa pegar o created_id da primeira tabela e inseri-lo na segunda tabela.

Então a segunda tabela se tornaria a seguinte,

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

Obrigado pela sua ajuda e orientação.

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

Além da resposta de Tom, se você precisar repetir a operação com frequência e quiser economizar tempo, faça o seguinte:

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

Eu acho que isso deve funcionar

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

Usando o INNER JOIN :

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

Outra solução alternativa como abaixo: Aqui estou usando a cláusula WHERE vez de JOIN

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

Você pode usar isso também:

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

mas com a minha experiência posso dizer que este caminho é tão lento e não recomendo!

Intereting Posts