[MySQL]子语句的查询技巧

一、统计group by语句的行数

group by语句中,如果包含字段统计函数(诸如:count(),sum()...),这种情况下统计函数只会作用于group by的字段,因此想拿到最终结果的行数,只能靠返回结果后通过程序去遍历统计行数,这里有一个问题,如果被查询的结果过于庞大,这将耗费大量的系统资源,运用子查询可以解决这个问题

SELECT count(a.id) AS count FROM (SELECT id, sum(credit) AS credits FROM log_collect WHERE credit > 1 GROUP BY usage_type HAVING credits > 8900) AS a

有几点需要注意的是:

1.你必须指定一个统计字段给函数(这里是count函数,指定了a.id),不能是a.*;

2.子表必须带别名;

posted @ 2018-04-04 10:19  yiyide266  阅读(236)  评论(0编辑  收藏  举报