【发布时间】:2020-01-26 05:42:04
【问题描述】:
我有两张如下表。
表 A:
ResultID(PK) | ImportDate | Comment1
-------------------------------------
101 | 25-09-2019 | One
--------------------------------------
102 | 25-09-2019 | Two
--------------------------------------
103 | 25-09-2019 | Three
----------------------------------------
表 B:
ResultID(PK) | ImportDate | Comment2
-------------------------------------
101 | 26-09-2019 | new one
--------------------------------------
104 | 26-09-2019 | four
--------------------------------------
所以输出应该是这样的
表 A:
ResultID(PK) | ImportDate | Comment1
-------------------------------------
101 | 26-09-2019 | new one
--------------------------------------
102 | 25-09-2019 | Two
--------------------------------------
103 | 25-09-2019 | Three
--------------------------------------
104 | 26-09-2019 | four
--------------------------------------
问题:
如果ResultID在表A和表B之间匹配,我想得到上面提到的结果表A,我想为ResultID更新表B中表A中的所有列。如果表 B 中的ResultID 不存在于表 A 中,则将其插入表 A。
我在 MySQL 中的尝试:
UPDATE TableA
SET comment1=
(SELECT comment2 FROM TableB WHERE TableA.ResultId=TableB.ResultId);
上述解决方案仅适用于更新表 A 的一列。我还尝试使用来自的多列更新参考 SQL Server 2005 implementation of MySQL REPLACE INTO? 但多列更新不适用于我的场景。
对于我的真实场景 - 我有 40 列和 50,000 行。
您能给我一些提示或解决方案吗?谢谢你。
【问题讨论】:
-
我认为您正试图避免包含 40 列,但除非您正在执行动态 sql,否则您将不走运。只需使用下面显示的解决方案之一添加 40 列。