mysq聚合函数group by 和where 一同使用遇到的问题
这两天在做团购活动,在展示团购人数的时候出现了一个问题,真实团购信息和页面展示团购信息不对等,始终差一条
最后定位到了是sql语句的问题
原因:
在当时写这个功能的时候使用了聚合函数:
SELECT * from bgroup GROUP BY groupid HAVING identity='1' ORDER BY begintime;
当时在写这条语句时没有考虑清楚where、groupby和having的执行顺序
这条语句在执行时,
1》先进行select查询,获取一个结果集
2》然后进行分组,关键就是分组这里,看结果集

3》然后根据这些分组的结果集进行查询,条件就是having 后边的条件,这时候就发现了上边标记出来的这条记录它在分组的时候获取第一条,给我返回的是个0,我后边再用having这条数据就没有了。。。。关键就是这个having作用的是上一个的结果集
4》之后进行order by排序

浙公网安备 33010602011771号