MySQL - обновление значений на основе подзапроса
скажем, у меня есть выбор, который возвращает меня из таблицы1:
ID Name
1 Bob
2 Alice
3 Joe
Затем я хочу значения UPDATE в другой таблице на основе этого результата:
UPDATE table2 SET Name = table1.Name WHERE ID = table1.ID
Как я понял, я могу сделать только внутренний выбор в одном месте, например:
UPDATE table2 SET Name = (select Name from table1) WHERE ...
И я не знаю, как указать условие WHERE.
Ответы
Ответ 1
все, что вам нужно сделать, это просто присоединить таблицы, подобные этому.
UPDATE table2 t2
JOIN table1 t1 ON t1.id = t2.id
SET t2.name = t1.name;
РЕЗУЛЬТАТЫ С ПРИСОЕДИНЕНИЕМ
если вы настроены на выполнение этого выбора, вы можете сделать это следующим образом.
UPDATE table2 t2,
( SELECT Name, id
FROM table1
) t1
SET t2.name = t1.name
WHERE t1.id = t2.id
РЕЗУЛЬТАТЫ ОТ SELECT
Ответ 2
UPDATE table2
SET name = (SELECT table1.Name FROM table1 WHERE table1.id = table2.id)
WHERE apply_condition
EDIT: # 1
UPDATE table2 t2, (SELECT id, name FROM table1) t1 SET t2.name = t1.name WHERE t1.id = t2.id
прочитайте эту ссылку , another
Ответ 3
Попробуйте это
Update table2
Set Name = (Select Name From table1 where table1.ID = table2.ID)
Where table2.ID In (Select ID From table1)