mySQL Workbench:查询以基于另一个表中的数据更新表

时间:2018-08-01 23:49:54

标签: mysql mysql-workbench

我有两个表,表A和表B看起来像这样:

表A的结构: id |名称| statistic1 | statistic2

表B的结构: id |名称|日期时间| round_info | statistic1 | statistic2

基本上,表B在许多不同的回合中记录statistic1和statistic2,因此将有许多具有相同名称的唯一条目,我希望表A是一个主列表,其中B中的每个名称都表示为A中的一行,其中A中的statistic1和statistic2分别是B中每个回合的statistic1和statistic2之和。

为此我需要的脚本应该从表B中获取每个名称,检查它是否在A中,如果不是,则插入具有该名称的默认行,然后使用表B数据更新它,如果是在A中,只需对其进行更新即可。

我有这段代码有一些缺点:

UPDATE A
INNER JOIN (SELECT B.name, sum(statistic1) as s1, sum(statistic2) as s2
FROM B
group by name) as t ON A.name = t.name
SET A.statistic1 = t.s1;

当B中的名称不在A中时,它不会在A中插入行,并且一次仅更新一个统计信息。

1 个答案:

答案 0 :(得分:0)

您尝试过吗:

UPDATE A
SET A.statistic1 = (SELECT sum(B.statistic1) 
    FROM B 
    WHERE B.name = A.name
    group by B.name )