一个SQL问题,请大家看看
来源:百度知道 编辑:UC知道 时间:2024/06/09 11:19:12
id aa
-------------------------- ----------------------------------
1 1000
表B
id aid bb
------------- ----------------- -------------------------------
1 1 500
2 1 300
select sum(aa),sum(bb) from A inner join B on A.id=B.aid
结果
------------- ---------------------
2000 800
而我想像中的是如下结果
------------- ---------------------
1000 800
请大家说说怎么办,当然大家不要告诉我用这个语句,
select aa,sum(bb) from A inner join B on A.id=B.aid
因为这只是实际问题的一个精简例子,将表A中的aa求和,请大家指点一下
我如果得到我想要的结果
select * from (select id,sum(aa) from A group by id)AA inner join (select aid,sum(bb) from B group by aid)BB on AA.id=BB.aid
A inner join B on A.id=B.aid 后的临时表为:
id aa bb
-------------
1 1000 500
1 1000 300
A.id=B.aid
面B表有两个id=aid,当然累加起来了。
select sum(A.aa),sum(B.bb) from A inner join B on A.id=B.aid 这句应该行。sum(a.aa)指定统计A表的,
根据您的问题描述 , 推测您的SQL查询目的只是为了汇总B.bb字段 , 而针对A.aa字段 , 只需要直接显示出与aid对应的A.aa字段值就可以了
建议通过Group by的方式 , 解决您的问题 , 具体SQL如下
select B.aid , A.aa ,sum(bb) from A inner join B on A.id=B.aid group by B.aid , A.aa
之所以多查询B.aid和A.aa字段 ,并按这两个字段进行分组
原因是 , 若A表和B表中的资料更复杂 , 分别如下时 , 也能保证查询结果的正确性 , 具体如下 :
表A
id aa
-------------------------- ----------------------------------
1 1000
2 1000
3 2000
表B
id aid bb
------------- ----------------- -------------------------------
1 1 500
2 1 300
3 2 500
4 2 300