2012-09-12 21 views
37

Tengo dos tablas,MySQL tabla de actualización basado en otro tablas de valores

Aquí es mi primera tabla,

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

Esta es mi segunda tabla,

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

Necesito De alguna forma, actualizo 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.

Así que la segunda tabla se convertiría en el siguiente,

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

Gracias por su ayuda y orientación.

Respuesta

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

creo que esto debería funcionar

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

Además de la respuesta de Tom si necesita repita la operación con frecuencia y quieren ahorrar tiempo que puede hacer:

UPDATE TABLE1 
     JOIN TABLE2 
     ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID 
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL 
1
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=''; 
+0

¿Podría por favor elaborar más su respuesta agregando un poco más de descripción acerca de la solución que proporciona? – abarisone

+0

usando join en subset_Id y Serial_Id obtendrás un conjunto de resultados. Y ese conjunto de resultados contendrá la ID creada. Ahora concéntrate en la consulta después de establecer allí realmente asignamos o proporcionamos valores de created_Id a Branch_Id .... espero que entiendas. . :) –

0

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 a continuación: Aquí estoy usando WHERE cláusula en lugar de JOIN

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

Puede utilizar 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!

Cuestiones relacionadas