UPDATE表SET具有多个值

时间:2017-11-14 23:28:05

标签: mysql join sql-update

我花了很多时间在网上试图寻找答案但没有成功,所以我决定发布以下内容。 我有以下表格:

TABLE_1
+------------+---------------+
| child_id   | mother_id     |
+------------+---------------+
|          1 |             4 |
|          2 |             3 |
|          3 |             2 |
|          4 |             1 |
+------------+---------------+

TABLE_2
+------------+---------------+
| child_id   | mother_id     |
+------------+---------------+
|          1 |             0 |
|          2 |             0 |
|          3 |             0 |
|          4 |             0 |
+------------+---------------+

我想使用位于表1中的mother_id的值更新表2中的mother_id的值。 当然,上面的例子可以手动解决:

UPDATE table2 SET mother_id = 1 where child_id = 4;
UPDATE table2 SET mother_id = 2 where child_id = 3;
UPDATE table2 SET mother_id = 3 where child_id = 2;
UPDATE table2 SET mother_id = 4 where child_id = 1;

但是,让我想象一下,有数千行需要更新。有没有办法使用与更新混合的选择连接查询(在child_id上)以便只有几行代码?

谢谢。

2 个答案:

答案 0 :(得分:2)

UPDATE
 table_2 AS t2 
 INNER JOIN table_1 AS t1 
   ON t2.child_id = t1.child_id
SET t2.mother_id = t1.mother_id;

您需要根据匹配的child_id加入这两个表,然后将mother_id的值从table_1设置为table_2的值。

这是demo

答案 1 :(得分:2)

通过内部联接有效地完成

update table_2 
inner join table_1 
on table_2.child_id = table_1.child_id
set table_2.mother_id = table_1.mother_id;