【问题标题】:Update column from another MYSQL table excluding already existing data从另一个 MYSQL 表中更新列,不包括现有数据
【发布时间】:2020-09-11 09:19:52
【问题描述】:

我有 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。我无法弄清楚如何排除现有行。 提前感谢您的帮助。

【问题讨论】:

  • 请向我们展示您想要的结果。
  • 结果应该显示table_1和table_2完全一样。
  • 表的主键是什么?
  • id 是两个表的主键
  • 您没有调用 table1 请修复已发布的代码。

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


【解决方案1】:

如果要在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)

【讨论】:

  • 感谢@GMB 的更正。这对我帮助很大。最后我使用了以下...INSERT INTO table_2 (system_id) SELECT table_1.system_id FROM table_1 WHERE NOT EXISTS(SELECT system_id FROM table_2 WHERE table_2.system_id = table_1.system_id)
猜你喜欢
  • 2017-03-08
  • 2022-10-18
  • 1970-01-01
  • 2012-12-14
  • 2021-10-06
  • 1970-01-01
  • 2014-11-16
  • 2011-03-05
  • 1970-01-01
相关资源
最近更新 更多