Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个MYSQL表更新列,不包括现有数据_Mysql_Sql_Sql Update_Inner Join_Sql Insert - Fatal编程技术网

从另一个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