在使用该子查询的结果加入我的主表之前,我需要对属于子查询中的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是一对多的,而且我的表很大,所以如果我只是加入两个表,那么查询需要永远。
谢谢!
答案 0 :(得分:0)
听起来这可以通过子查询来解决
Select
A.Site,
(SELECT SUM(B.Cost) FROM B WHERE B.Id = A.Id) as `Cost`
FROM A;