MySQL-总和正在成倍增加
我试图从表a中获取数据,从左连接表b中获取一个和,从另一个左连接表c中获取另一个和 那么,把a和b结合起来: 输出 身份证件 名称 总量 1. 测验 14MySQL-总和正在成倍增加,mysql,sql,join,sum,Mysql,Sql,Join,Sum,我试图从表a中获取数据,从左连接表b中获取一个和,从另一个左连接表c中获取另一个和 那么,把a和b结合起来: 输出 身份证件 名称 总量 1. 测验 14 这是常见的连接乘法。可能的解决方案-在子查询中为每个聚合的表聚合一个表,然后联接 选择a.id、a.name、sum\u b、sum\u c 从表a 左联接选择id_表_a,总和数量总和_b 来自表b b.id\U表上的按id\U表\U a b分组=a.id 左联接选择id\u表\u a、数量总和\u c 来自表c c.id\u table\
这是常见的连接乘法。可能的解决方案-在子查询中为每个聚合的表聚合一个表,然后联接 选择a.id、a.name、sum\u b、sum\u c 从表a 左联接选择id_表_a,总和数量总和_b 来自表b b.id\U表上的按id\U表\U a b分组=a.id 左联接选择id\u表\u a、数量总和\u c 来自表c c.id\u table\u a=a.id上的按id\u table\u a c分组;
您可能会发现,最佳性能是:
SELECT a.id, a.name,
(SELECT SUM(b.quantity)
FROM table_b b
WHERE b.id_table_a = a.id
) as sum_b,
(SELECT SUM(c.quantity)
FROM table_c c
WHERE c.id_table_a = a.id
) as sum_c
FROM table_a a;
对于性能,您需要表\投标\表\数量和表\ cid\表\数量上的索引
SELECT a.id, a.name,
(SELECT SUM(b.quantity)
FROM table_b b
WHERE b.id_table_a = a.id
) as sum_b,
(SELECT SUM(c.quantity)
FROM table_c c
WHERE c.id_table_a = a.id
) as sum_c
FROM table_a a;