您的位置:首页 > 数据库 > MySQL

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

2015-06-10 10:29 656 查看
在使用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));


参考:/article/3704736.html

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: