2011-04-16 81 views
5

我在數據庫中使用兩個表。第一個表是這樣的:Mysql更新值

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 

,第二個表是這樣的:

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

我要更新所有的「0」值的行(「MSG_ID」列)第二個表基於來自第一個表的msg_id記錄。 是否可以通過單個查詢來完成?

結果應該是這樣的:

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

回答

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;