MYSQL使用group by,如何查询出总记录数

比如有这样一条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

原文地址:https://www.cnblogs.com/eternityz/p/12243433.html

时间: 2024-10-05 06:00:58

MYSQL使用group by,如何查询出总记录数的相关文章

group by 获取总记录数

sql中有group buy 后如何获取总记录的条数,来生成分页 当然一般情况下我是不推荐这样的分页,如果你真的需要应该是你表结构设计有问题 1.适用于所有情况 $db = new PDO(DSN...); $db->setAttribute(array(PDO::MYSQL_USE_BUFFERED_QUERY=>TRUE)); #必须开启查询缓存 $rs = $db->query('SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 5,15'

[MSSQL]如何高效查询表的总记录数

如何高效查询表的总记录数?[总结-整理-马克] 首先想到的自然是在表主键上应用COUNT函数来查询了,这个是目前使用最多的方法,没有之一 SELECT COUNT(1) ROWS FROM product 这里再给出一些其它方法,这些方法或多或少会有一些限制,或者看起来不是那么"完美",但依然有一定的借鉴意义,信息量不大,请客官慢用 另类方法1 充分利用系统自带的存储过程SP_SPACEUSED,详细的使用方式推荐谷哥或度娘,看代码 EXEC SP_SPACEUSED 'PRODUCT

超市账单管理------之获取总记录数

根据以前写过的登录,现在来写一下获取总记录数根据上一个继续编写 1.在IUserInfoDAO中编写 1 //2.获取总记录数 2 public int getTotalCount(); IUserInfoDAO.xml 1 <!--2.获取总记录数--> 2 <select id="getTotalCount" resultType="int"> 3 select count(1) from smbms_user 4 </select

分页的总记录数简单总结

提出:   页面一行显示10条数据,如果数据库有20条数据,就显示2页,如果数据库有28数据,就应该显示3页. 下面对如何计算进行分析. 解决: 方法一: if(totalRecord % pageSize == 0){ //如果数据库总记录数与页面显示条数整好相除(20 / 10 = 2),就是一般情况 totalPage = totalRecord / pageSize; }else{ //如果数据库总记录数与页面显示条数有多余条数(28 / 10 = 2.8),无法得到多余 //数据的页数

关于criteria分页中获取总记录数异常问题

一.情景在线 运维同事反馈了一个问题,说咱们查询分机号码的api 接口返回数据异常,具体的情况时是: 1.查询时第一页信息所返回的总记录数正确,数据正确. 2.查询第二页总记录数为 "0" ,数据为对应的第二页数据. what!!! 二.为题排查 按照同事的提供的线索,在本地复现发现-->果然如此! 传入当前页 pageNow>1 时 总数totel 将为零,且必现! 多次测试发现: 传入pageNow=1 控制台打印的sql select count(*) as y0_

分页总数计算,根据总记录数获取分页总数_目标科技

分页总数计算,根据总记录数获取分页总数,本文章提供5种写法,大家感觉哪个好用就拿去用吧. int pageSize = 20; //每页记录数量 int totalCount = 100005; //总记录数 int pageCount; //总页数 //方法一: pageCount = (totalCount + pageSize - 1) / pageSize; //推荐写法 //方法二: pageCount = (totalCount - 1) / pageSize + 1; //方法三:

MSSQL语句学习(查询表的总记录数)

如何高效查询表的总记录数(通用方法) SELECT COUNT(1) ROWS FROM product 野路子1:利用系统自带的存储过程SP_SPACEUSED,详细的使用方式推荐谷哥或度娘, EXEC SP_SPACEUSED 'PRODUCT' 野路子2: 很多表都会设计一个步长为1的自增长整型(INT)列作为表主键,该做法优劣这里不展开讨论,仅基于这一"习惯",外加一个假设:该字段连续无为断,则可以使用MAX函数了,限制较多哈 1,自增长列 2,该列连续 SELECT MAX(

MySQL使用GROUP BY后查询总记录数

test表 要查出某个用户具有哪些操作,即把操作进行组合 以下的SQL可以达到目的 SELECT NAME,GROUP_CONCAT(operation) AS operation FROM test GROUP BY NAME 接着要查出这样的用户有多少个,直接在SELECT后加上COUNT()函数已经不起作用了. 一种解决方式是把查询结果当作一张表,在外层用SELECT COUNT(*) SELECT COUNT(*) FROM ( SELECT NAME,GROUP_CONCAT(oper

mysql千万级数据量查询出所有重复的记录

查询重复的字段需要创建索引,多个条件则创建组合索引,各个条件的索引都存在则不必须创建组合索引 有些情况直接使用GROUP BY HAVING则能直接解决:但是有些情况下查询缓慢,则需要使用下面其他的方法 以下是本人整理出来的查询重复数据的SQL,适用于千万级数据量的MYSQL数据库. 1.适用于整数类型的 SELECT DISTINCT UId FROM vehicle WHERE 1=1 GROUP BY UId HAVING(COUNT(UId))>1; 2.分组排序 SELECT UId