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