对于措辞不佳的问题,我很抱歉,但如果不深入了解以下所有细节,我无法弄清楚如何表达它。
我有表t具有我正在尝试更新的列值...
mysql> select * from t;
+------+-------+
| k | value |
+------+-------+
| 10 | 0.00 |
+------+-------+
...来自表v。表v使用k作为外键...
mysql> select * from v;
+------+-------+
| fk | value |
+------+-------+
| 10 | 4.00 |
| 10 | 5.00 |
+------+-------+
我的理解是,这将是一个带有 INNER JOIN 的相当基本的更新,如下所示:
mysql> UPDATE t
-> INNER JOIN v on v.fk = t.k
-> SET t.value = t.value + v.value;
我期望t.value为 9.00,但结果为 4.00。
我知道我可以使用子查询和 SUM 来做到这一点,但这将在大量数据上运行,所以如果可能的话,我宁愿避免这种情况。有没有办法通过内部连接来做到这一点?