Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL工作台:根据另一个表中的数据查询更新表_Mysql_Mysql Workbench - Fatal编程技术网

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

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

我有两张表,表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中,则只需对其调用更新即可

我的代码有一些缺点:

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 )