Значения обновления Mysql

#mysql

#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;
  

Ответ №2:

 UPDATE secondTable 
SET msg_id = (SELECT msg_id FROM firstTable WHERE firstTable.msg_id = secondTable.msg_id)
WHERE msg_id = 0;
  

Ответ №3:

 UPDATE  table2 t2
JOIN    table1 t1
ON      t2.id = t2.id
SET     t2.msg_id = t1.msg_id
WHERE   t2.msg_id = 0
  

Ответ №4:

ПОПРОБУЙТЕ

 UPDATE table2 t2  SET msg_id = (SELECT msg_id 
  FROM table1 t1 where t2.id = t1.id AND t2.msg_id=0)
  

Ответ №5:

 UPDATE secondTable as st , firstTable as ft set st.msg_id = ft. msg_id WHERE ft.id = st.id
and st.msg_id = 0;