从另一个MYSQL表更新列,不包括现有数据
我有两个表,如下所述从另一个MYSQL表更新列,不包括现有数据,mysql,sql,sql-update,inner-join,sql-insert,Mysql,Sql,Sql Update,Inner Join,Sql Insert,我有两个表,如下所述 table_1 | id | system_id | | 1 | 3 | | 2 | 12 | | 3 | 45 | | 4 | 7 | table_2 | id | system_id | | 1 | 3 | | 2 | 12 | 我想用表1中的剩余行(不包括已经存在的行)更新表2 我尝试了以下查询 UPDATE table_2 INNER JOIN table_2
table_1
| id | system_id |
| 1 | 3 |
| 2 | 12 |
| 3 | 45 |
| 4 | 7 |
table_2
| id | system_id |
| 1 | 3 |
| 2 | 12 |
我想用表1中的剩余行(不包括已经存在的行)更新表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
这将使用表_1中的所有行更新表_2。我无法确定如何排除现有行。
提前感谢您的帮助。如果要在表2中创建新行,则需要插入,而不是更新。如果要同时更新现有行上的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)
请向我们显示您想要的结果。结果应显示表1和表2完全相同。表的主键是什么?id是两个表的主键。如果您不调用表1,请修复发布的代码。感谢@GMB的更正。这对我帮助很大。最后,我使用了以下方法。。。插入表2系统id从不存在的表1中选择表1系统id从表2中选择系统id,其中表2系统id=表1系统id