利用mysql中的SQL_CALC_FOUND_ROWS 来实现group by后的记录数统计

最近正在做一个显示消息的列表页,列表页中需要根据一个字段来分组显示。并且需要一个分页的效果。

大家也知道group by 后的数据是每一组一行记录,统计分组后的总的记录数又不能用count,所以SQL_CALC_FOUND_ROWS就派上用场了。

所谓SQL_CALC_FOUND_ROWS是指在执行带LIMIT的查询时,附带统计一下如果不加LIMIT的话将会输出多少条结果。

用法:

SELECT SQL_CALC_FOUND_ROWS * FROM `TA` LEFT JOIN `TB` on TA.id = TB.a_id GROUP BY TA.id ORDER BY ctime desc limit 0,20;

查询完毕后再执行:

SELECT FOUND_ROWS();

这个语句返回group by 后的总记录数,如下图:

FOUND_ROWS()得到的数字是临时的,执行下一条语句就会失效。所以保存在一个变量中为我们所用就OK了。

 

posted @ 2015-01-27 23:34  ticm  阅读(1494)  评论(0编辑  收藏  举报