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)