2011-04-16 16 views
5

Estoy usando dos tablas en la base de datos. La primera tabla es el siguiente:Mysql update values ​​

id | msg_id |  user | date 
------------------------------------------------- 
    01 | 122  | user 1 | 2011-04-01 
    02 | 453  | user 2 | 2011-04-03 
    03 | 124  | user 3 | 2011-04-05 

Y la segunda tabla es el siguiente:

 id | msg_id |  status | 
    ---------------------------------------- 
     01 |  0  |  1  | 
     02 |  0  |  1  | 
     03 |  124 |  1  | 

Quiero actualizar todas las filas con el valor "0" (columna "msg_id") en el segunda tabla basada en los registros msg_id de la primera tabla. ¿Es posible hacerlo con una sola consulta?

El resultado debe ser similar:

 id | msg_id |  status | 
    ---------------------------------------- 
     01 | 122  |  1  | 
     02 | 453  |  1  | 
     03 | 124  |  1  | 

Respuesta

1
UPDATE table1 AS t1, table2 AS t2 
SET t2.msg_id=t1.msg_id 
WHERE t1.id = t2.id and t2.msg_id = 0; 
0
UPDATE secondTable 
SET msg_id = (SELECT msg_id FROM firstTable WHERE firstTable.msg_id = secondTable.msg_id) 
WHERE msg_id = 0; 
0
UPDATE table2 t2 
JOIN table1 t1 
ON  t2.id = t2.id 
SET  t2.msg_id = t1.msg_id 
WHERE t2.msg_id = 0 
0

TRY

UPDATE table2 t2 SET msg_id = (SELECT msg_id 
    FROM table1 t1 where t2.id = t1.id AND t2.msg_id=0) 
0
UPDATE secondTable as st , firstTable as ft set st.msg_id = ft. msg_id WHERE ft.id = st.id 
and st.msg_id = 0; 
Cuestiones relacionadas