给出以下表格结构:
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
添加的全部值,然后该结果集将加入更新...这似乎有点过头了虽然这么简单!有没有人有一个优雅而有效的解决方案?
答案 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;