如何使用INNER JOIN在UPDATE上多次添加值?

时间:2013-02-08 12:03:59

标签: mysql sql sql-update

对于措辞不好的问题感到抱歉,但我无法弄清楚如何在没有详细说明的情况下对其进行说明。

我的表 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 |
+------+-------+

我的理解是,这将是一个相当基本的UPDATE 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来完成它,但这将会运行大量的数据,所以如果可能的话,我更愿意避免这种情况。有什么方法可以通过内连接来实现这个目的吗?

1 个答案:

答案 0 :(得分:1)

计算子查询中的结果。

UPDATE  t
        INNER JOIN
        (
            SELECT fk, SUM(value) totals
            FROM v
            GROUP BY fk
        ) a ON t.k = a.fk
SET     t.value = a.totals