一个简单的数据库查询问题。
a表:pillid(外键),num,
b表:pillid(主键),name,Factory,Mark,PillImage...
现在的问题是统计a表的num并显示pillid的所有信息(b表);
模拟SQL语句是:
select sum(a.num),b.*
from a left join b on a.pillid=b.pillid
group by a.pillid
但是这个group by连接查询肯定报错,只是为了说明逻辑。求助。
------解决方案--------------------select sum(a.num),b.*
from a left join b on a.pillid=b.pillid
group by (B的字段)
------解决方案--------------------
逻辑:先统计a表的num,再关联b表的相关字段。
select aa.pillid,aa.num,b.*
from(
select pillid,sum(num) num
from a
group by pillid
)aa
left join b on aa.pillid=b.pillid
------解决方案--------------------SQL code
select sum(a.num),b.*
from a left join b on a.pillid=b.pillid
group by b表所有字段
-->这是group by 的规则,你可以把a.pillid放在第一位
------解决方案--------------------
select 语句的顺序是先group by 再select的,所以在select中,非sum/avg/max/min/count的条件,都要首先出现在group by中。