在加入主表之前,将子查询中的多个元素相加

时间:2017-09-01 01:27:47

标签: mysql join sum

在使用该子查询的结果加入我的主表之前,我需要对属于子查询中的ID的所有值求和。例如:

Table A
ID   |   Site
1    |   TX
2    |   NY

Table B
ID  |  Cost
1   |   10
1   |   2
1   |   8
2   |   3
2   |   7

Select A.Site, B.Cost
from A 
Left join (select distinct ID, Cost from B) as B
on A.ID = B.ID
Group by A.Site;

此表的结果是:

Site   |   Cost
TX     |    10
NY     |    3

应该是

Site   |   Cost
TX     |    20
NY     |    10

似乎我的子查询没有提取属于每个Distinct B.ID的所有费用 - 因此我的加入只带来第一个成本记录而不是每个B.ID的每个成本记录的总和

在将子查询加入主表之前,如何将子查询中的所有成本加起来?我需要使用一个子查询,因为我的ID是一对多的,而且我的表很大,所以如果我只是加入两个表,那么查询需要永远。

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来这可以通过子查询来解决

Select 
    A.Site, 
    (SELECT SUM(B.Cost) FROM B WHERE B.Id = A.Id) as `Cost`
FROM A;