SQL从另一个表替换表中的值

时间:2018-05-31 16:34:58

标签: sql mariadb

我有两个表格,我想用table2&#39s列中的值替换table1&#39s列中的部分值。

更好地解释: enter image description here 我想将值放在列#34; name"从table2到column" name"在table1中,对于id为3-9的行。

我在Mysql workbench和MariaDB工作。

3 个答案:

答案 0 :(得分:2)

最直接的方法是在SET子句中使用子查询。

UPDATE table1
       SET name = (SELECT t2.name
                          FROM table2 t2
                          WHERE t2.pid = table1.id)
       WHERE id >= 3
             AND id <= 9;

答案 1 :(得分:2)

@ stickybit的答案可能正常,但我认为我会使用JOIN提供替代方案,因为它比子查询和BETWEEN更有效,因为它使语法成为更简单:

UPDATE table1
JOIN table2
ON table1.id = table2.pid
SET table1.name = table2.name
WHERE table1.id BETWEEN 3 AND 9;

答案 2 :(得分:-1)

update table1 t1 
set t1.name=t2.name from table1 t1 ,table2 t2 
where t1.id=t2.id and id between 2 and 10