龙空技术网

MYSQL使用group by时,查询结果的总记录数

爱音乐的程序员小新人 376

前言:

如今各位老铁们对“mysqlgroupby分页”大约比较注重,咱们都需要分析一些“mysqlgroupby分页”的相关知识。那么小编同时在网络上汇集了一些对于“mysqlgroupby分页””的相关内容,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!

在使用group by时 select count(*) from partner.gs_user_info u group by u.username,u.game;
查询结果如下:

count计算的数量是每个group by的结果的数量,并不是我要的查询记录数的数量。

正确的写法是这样的:

select count(*) from ( select * from partner.gs_user_info u group by u.username,u.game) aa;
结果如下:

或者相同结果的写法:

select count(distinct u.username,u.game) from partner.gs_user_info u ;

在使用criteria时使用distinct:

ProjectionList projectionList = Projections.projectionList();projectionList.add(Projections.property("username"));projectionList.add(Projections.property("game"));criteria.setProjection(Projections.distinct(projectionList));

参考:

SELECT t.report_date ,t.user_id FROM my_table t GROUP BY t.user_id,t.report_date比如有这样一条SQL,根据t.user_id,t.report_date两个字段统计

这样前端页面能展示数据,但往往需要一个总记录数,在有分页的情况下用到

一种解决方法是在外面套一层,然后对其count(*)

 SELECT COUNT(*) FROM (SELECT  t.report_date  ,t.user_id  FROM  my_table t  GROUP BY t.user_id,t.report_date ) AA 
还有一种简单的方法可以这样写 SELECT COUNT(DISTINCT report_date,user_id)  FROM my_table 

这样就针对上面的group by查询显示其总记录数

 如果只对user_id group by SELECT  t.user_id  FROM  my_table t  GROUP BY t.user_id 
 SELECT COUNT(DISTINCT user_id) FROM my_table 

标签: #mysqlgroupby分页