mySQL工作台:根据另一个表中的数据查询更新表
我有两张表,表A和表B,看起来像这样: 表A结构: id |名称|统计1 |统计2 表B结构: id | name | datetime | round | u info | statistic1 | statistic2 基本上,表B记录了许多不同回合的statistic1和statistic2,因此将有许多具有相同名称的唯一条目,我希望表A是一个主列表,其中B中的每个名称表示为A中的一行,其中A中的statistic1和statistic2分别是B中每轮的statistic1和statistic2之和 我需要的脚本应该从表B中获取每个名称,检查它是否在A中,如果不在,则插入一个具有该名称的默认行,然后使用表B数据更新它,如果它已经在A中,则只需对其调用更新即可 我的代码有一些缺点:mySQL工作台:根据另一个表中的数据查询更新表,mysql,mysql-workbench,Mysql,Mysql Workbench,我有两张表,表A和表B,看起来像这样: 表A结构: id |名称|统计1 |统计2 表B结构: id | name | datetime | round | u info | statistic1 | statistic2 基本上,表B记录了许多不同回合的statistic1和statistic2,因此将有许多具有相同名称的唯一条目,我希望表A是一个主列表,其中B中的每个名称表示为A中的一行,其中A中的statistic1和statistic2分别是B中每轮的statistic1和statist
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插入行,并且一次只更新一个统计信息。您尝试过以下方法吗:
UPDATE A
SET A.statistic1 = (SELECT sum(B.statistic1)
FROM B
WHERE B.name = A.name
group by B.name )