MySQL:使用另一个表中的值在一个查询中多次更新同一行

时间:2014-07-08 18:53:44

标签: mysql

给出以下表格结构:

T1:

id a
1  1
2  2
3  3

T2:

id t1_id b
1  1     1
2  1     2
3  2     3

我需要将t2.b的值添加到t1.a的值t2.t1_id = t1.id

使用以下联接的简单更新不起作用:

UPDATE t1
  JOIN t2 
    ON t2.t1_id = t1.id
   SET t1.a = t1.a + t2.b
 WHERE t2.id IN(1,2)

预期的T1结果(将1和2加到t1.a = 1; 3加到t1.a = 2):

id a
1  4
2  5
3  3

实际T1结果(仅将t1.a = 1加1; t1.a = 2加3):

id a
1  2
2  5
3  3

目前,我正在查看一个选择,该选择计算要使用group by添加的全部值,然后该结果集将加入更新...这似乎有点过头了虽然这么简单!有没有人有一个优雅而有效的解决方案?

1 个答案:

答案 0 :(得分:1)

很快就想到了这个真实。

UPDATE T1 AS t
JOIN (
    SELECT
        t1_id, SUM(b) AS sum_total
    FROM
        T2
    WHERE
        t1_id IN (1, 2)
    GROUP BY
        T2.t1_id
) AS t2 ON t.id = t2.t1_id
SET  t.a =  t.a + t2.sum_total;