mysql工作台:根据另一个表中的数据查询更新表

enyaitl3  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(296)

我有两张表,表a和表b看起来像这样:
表a结构:id | name | statistic1 | statistic2
表b结构:id | name | datetime | round | u info | statistic1 | statistic2
基本上,表b记录了许多不同轮次的statistic1和statistic2,因此会有许多具有相同名称的唯一条目,我希望表a是一个主列表,其中b中的每个名称表示为a中的一行,其中a中的statistic1和statistic2分别是b中每轮次的statistic1和statistic2之和。
我需要的脚本应该从表b中获取每个名称,检查它是否在a中,如果不在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插入行,并且一次只更新一个统计信息。

pxy2qtax

pxy2qtax1#

你试过这个吗:

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

相关问题