来自另一个MYSQL表的更新列,不包括已经存在的数据

时间:2020-09-11 09:19:52

标签: mysql sql sql-update inner-join sql-insert

我有2张桌子,如下所述...

table_1
| id | system_id |
| 1  | 3         |
| 2  | 12        |
| 3  | 45        |
| 4  | 7         |

table_2
| id | system_id |
| 1  | 3         |
| 2  | 12        |

我想用table_1中的剩余行更新table_2,不包括已经存在的行。

我尝试了以下查询...

UPDATE table_2
INNER JOIN table_2 ON table_2.system_id = table_1.system_id
SET table_2.system_id = table_1.system_id

这将使用来自table_1的所有行更新table_2。我无法解决如何排除现有行。 感谢您的任何事先帮助。

1 个答案:

答案 0 :(得分:0)

如果要在table_2中创建新行,则需要insert,而不是update。如果要同时更新现有行上的system_id,可以使用on duplicate key

假设每个表的主键是id,您将执行以下操作:

insert into table_2 (id, system_id)
select id, system_id 
from table_1
on duplicate key update system_id = values(system_id)
相关问题