MySQL - 根据子查询更新值

Mas*_*ass 22 mysql select sql-update

假设我有选择,它从table1返回我:

ID  Name
 1  Bob
 2  Alice
 3  Joe
Run Code Online (Sandbox Code Playgroud)

然后我希望基于此结果在另一个表中的UPDATE值:

UPDATE table2 SET Name = table1.Name WHERE ID = table1.ID
Run Code Online (Sandbox Code Playgroud)

据我所知,我只能在一个地方进行内部选择,例如:

UPDATE table2 SET Name = (select Name from table1) WHERE ...
Run Code Online (Sandbox Code Playgroud)

我不知道如何指定WHERE条件.

Joh*_*ell 60

你应该做的就是加入这样的表格.

UPDATE table2 t2
JOIN table1 t1 ON t1.id = t2.id
SET t2.name = t1.name;
Run Code Online (Sandbox Code Playgroud)

加入的结果

如果您选择使用选择,可以这样做.

UPDATE table2 t2,
(   SELECT Name, id 
    FROM table1 
) t1
SET t2.name = t1.name
WHERE t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)

SELECT的结果


Raj*_*osh 13

 UPDATE table2
 SET name = (SELECT table1.Name FROM table1 WHERE table1.id = table2.id)
 WHERE apply_condition
Run Code Online (Sandbox Code Playgroud)

编辑:#1

   UPDATE table2 t2, (SELECT id, name FROM table1) t1 SET t2.name = t1.name WHERE t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)

请阅读此链接,另一个

  • 确定的事情 :) 如果您将查询更改为仅选择,然后设置名称,它将是一次选择...类似这样的事情。`UPDATE table2, (SELECT id, name FROM table1) t1 SET t2.name = t1.name WHERE t1.id = t2.id` (2认同)