2011-04-16 40 views
5

Veritabanında iki tablo kullanıyorum.Mysql güncelleştirme bilgileri

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 

Ve ikinci tablo aşağıdaki gibidir:: İlk tablo şöyle

ben "0" değerine sahip tüm satırları ("msg_id" sütunu) güncellemek istiyorum
 id | msg_id |  status | 
    ---------------------------------------- 
     01 |  0  |  1  | 
     02 |  0  |  1  | 
     03 |  124 |  1  | 

İlk tablodan msg_id kayıtlarına dayalı ikinci tablo. Tek bir sorgu ile yapmak mümkün mü?

sonuç gibi görünmelidir:

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

cevap

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

TL

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; 
İlgili konular