如何在MySQL中使用多个相同值从第二个表更新主表

时间:2019-04-26 13:44:48

标签: mysql

我正在尝试通过将主表与另一个包含相同字段但具有每日值的表进行比较来更新主表。第二个表也包含同一个人的多个记录。 (此表中没有主键)

我的查询执行得很好,但是在找到第一个匹配项并且不扫描表的其余部分时会停止。

update crates as a, t23042019 as b set a.srsb=a.srsb+b.srsb, a.srsc=a.srsc+b.srsc, a.hfc=a.hfc+b.hfc, a.mix=a.mix+b.mix where a.name=b.name;

坑表

name   srsb srsc hfc mix
hitesh 5    5    5   5
raman  2    3    4   1

t23042019表

name   srsb srsc hfc mix
raman  1    -2   0   1
hitesh 2     2   2   2
hitesh -5 0 0 -2
raman -1 0 0 0

查询后的预期结果

crates table
name   srsb srsc hfc mix
hitesh 2    7    7   5
raman  2    1    4   2

查询结果

坑表

name   srsb srsc hfc mix
hitesh 7    7    7   7 
raman  3    1    4   2

1 个答案:

答案 0 :(得分:0)

如下所示:

UPDATE crates a
INNER JOIN (
SELECT name, SUM(srsb) AS srsb, SUM(srsc) AS srsc, SUM(hfc) AS hfc, SUM(mix) AS mix
FROM t23042019
GROUP BY name) s
ON a.name=s.name
SET a.srsb=a.srsb+s.srsb,
...