MYSQL使用group by时,查询结果的总记录数
在使用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));
参考:http://blog.csdn.net/thc1987/article/details/25150789
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
相关推荐
苏康申 2020-11-13
vitasfly 2020-11-12
专注前端开发 2020-10-21
oraclemch 2020-11-06
liuyang000 2020-09-25
FellowYourHeart 2020-10-05
赵继业 2020-08-17
whyname 2020-08-16
Seandba 2020-08-16
dbasunny 2020-08-16
拼命工作好好玩 2020-08-15
langyue 2020-08-15
写程序的赵童鞋 2020-08-03
Accpcjg 2020-08-02
tydldd 2020-07-30
好记忆也需烂 2020-07-28
jianghero 2020-07-28