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
相关文章推荐
- Mac下修改Mysql数据库密码,忘记密码
- mysql 用户管理和权限设置
- 语法:MySQL中INSERT IGNORE INTO和REPLACE INTO的使用
- MySQL的错误码
- MySQL执行计划解读
- MySQL查询本周、上周、本月、上个月份数据的sql代码
- MySQL数据库学习一 数据库概述
- ubuntu安装mysql的时候报 hash 校验和不符的解决方法
- mysqldump 使用–single-transaction
- MySQL存储过程
- (DBA之路【六】)mysql锁的全解-比较实例化的一篇文章
- 10分钟学会理解和解决MySQL乱码问题
- MySQL事务隔离级别介绍及设置
- Ubuntu编译swoole时制定--enable-async-mysql的笔记
- Ubuntu编译swoole时制定--enable-async-mysql的笔记
- Mysql
- Mysql
- 【mysql5.6】数据类型
- 你可能不知道的mysql语句
- Mysql体系结构及sql执行过程总结