最近正在做一个显示消息的列表页,列表页中需要根据一个字段来分组显示。并且需要一个分页的效果。

大家也知道group by 后的数据是每一组一行记录,统计分组后的总的记录数又不能用count,所以SQL_CALC_FOUND_ROWS就派上用场了。

所谓SQL_CALC_FOUND_ROWS是指在执行带LIMIT的查询时,附带统计一下如果不加LIMIT的话将会输出多少条结果。

用法:

SELECT SQL_CALC_FOUND_ROWS * FROM `TA` LEFT JOIN `TB` on TA.id = TB.a_id GROUP BY TA.id ORDER BY ctime desc limit 0,20;

查询完毕后再执行:

SELECT FOUND_ROWS();

这个语句返回group by 后的总记录数,如下图:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKgAAABICAIAAADtbSlhAAAFSUlEQVR4nO2ay47aSBRA70fFlsW/RAID/SFZBJoWiE+YVVYWMkLub8gOtRo0yLCdZJa0PcFkYtNZ1MNlbMDj9qOm6x5dKXY9r+uY9OvCK8OyLH693+/3+71lWX+n+fLxw6evwr9CB3z8Et9+/fQBkoi9/xnLsrLzETdM7HB+z1vP8i6WzKuUZBxRQkt8A+Icfn1NfEPcFl8j/yfxF7gh/rs0EPFNZ0GRWXzOR7gh/ps0EPFNZ0GRWXzOR0DxRXj/4v+SBiK+6SwoMovP+QjZ4i3kFk1ovU3+/C+KbyJtpD5QvKKgeEW5Lf4P5D2SS3x4i91uF51ef/yLUV9Ep9fdblftJz6v+J8Y9YVE4v/5iVFfSCX+hFFboHhFA8UrGhKJ948n/+gOdaH2Qp88HU/+8eSvJ1rcagzXJ5+0H51O4vbkrycanUWWSvbO+5Do5fRnR2FYIi6kdDWxWReg6/BhTw+GOFG4dTpscmd+SozvOrMuaA/uhazeGlKJj8gpd+aRfxRi3gcwhmt2u55owMcQ8cJgKp4t1SWmhaXE3rm4RWpfGomRzOitxObivvwVjBfRHlxina3sDvX+LOMRkk9XXsgvXjwd0RM5plvi5+5QJ6d8VTzVxo7+snh/3mfirya2nmhxYk4H+p2u6NgYrsVUEzHrZm73jsUHkR+4Qx06duQHLOw+6JOnQGgJIj9wOmAMV+IFi9VEo+PZUquJBmzNeLXURhkt6XZ3qIM2cnMkJsyy+2A6TyMDTIdmCP0ZHZze0R3qwhPFj1NyyCieo43cC+fLjzWH+CB6GhlAzrqo+PirON/rRmIRNz0z2ftHxtt9+gaQa/IdRuLVuXL7HsV7QeQF7kCHth15AQu7D/pkGQgtdJgxWEVe4LSBXLBYTTQ6XlzKHegApiOsltooXjO9Fx1pmQCmky8xnglvoReWCdrIFWctRwYAWznO/3pWbw2pxIdesBno0LZDL+CxaMNZS+jZPYCelTne7oE+Xqa7VmMNoG1e6E1MPAtxpJjM9cTIgJ61GmtsWcuEtr0Z6MZgld6Fr7Zoxyukb0sL+cWHy5EBIBwWUWiLveJZgzbaZC5FP1iZ4u1eYouL4sPlyODvx/XEqGmzx/IJPbsHZq/NX6/VWDMXgmCyFL/ga75v8dHJO4TegZ3yIRnPY/HH5cFzotcyhW8L7jesPb3UZqAD6OMlv45/OieNmXG2zmagA5iLPIl5dg9AnLtogzD3EC7vDT6ZD7NMYYrdE8eXGFF0kkX8yyHEeDmEL89jTR8vD+HLYfNZNz4/V7KLVOJ/SRCLNiRo2w2ksbw3wFxYJmj3f1a0hUzif/zCqC1kER+i+HojRPFqBopXNOoQv0NkpVrx1yto3/ibBKQw+/2+8Nzc4isr90QKU4f46so9kcLUI76q4i+kMCheUeoTDwAoXh7qEE8qO8lvv8st90RiHu/YXxha022iZzttnTfVJT7yjxH/y0eJVX8I4/GOu328A7h7JNfbaSvzXWhEvOgexVfA4x0VvZ22oDXd8nuRWsQHkR8kxANAKVV/SAbiJ541SCSeuEfxJbOdts60NyieVHaeWS+l3BMR2U5bWV/NmxQfekGYtF5O1R/CSf0Hn+iSQnyJ5Z4IZTttXdLemHhaQUvFl1vuiVDiH+Ip4lvQmHhS2QkApZd7IoWpR3xV5Z5IYWoRf7kGCMU3ReXir9fTvbH4CykMilcUFK8olYvPU+65R5qgWvGFV0ekBcUrCopXFBSvKCheUVC8oqB4RUHxioLiFQXFKwqKVxQUrygoXlFQvKKgeEVB8YqC4hXlNx6OZoBg5CNAAAAAAElFTkSuQmCC" alt="" />

FOUND_ROWS()得到的数字是临时的,执行下一条语句就会失效。所以保存在一个变量中为我们所用就OK了。

利用mysql中的SQL_CALC_FOUND_ROWS 来实现group by后的记录数统计的更多相关文章

  1. mysql中的with rollup得到group by的汇总信息

    使用mysql中的with rollup可以得到每个分组的汇总级别的数据: 表如下: CREATE TABLE `test3` (  `id` int(5) unsigned NOT NULL AUT ...

  2. group by 获取总记录数

    sql中有group buy 后如何获取总记录的条数,来生成分页 当然一般情况下我是不推荐这样的分页,如果你真的需要应该是你表结构设计有问题 1.适用于所有情况 $db = new PDO(DSN.. ...

  3. MySql中对Group by后的结果数进行Count

    今天在写MySQ的SQL语句的时候遇到了一个奇怪的问题 select count(*) from subsitealbum t1, photo t2,files t3 where t1.SourceA ...

  4. 利用MySQL中的乐观锁和悲观锁实现分布式锁

    背景 对于一些并发量不是很高的场景,使用MySQL的乐观锁实现会比较精简且巧妙. 下面就一个小例子,针对不加锁.乐观锁以及悲观锁这三种方式来实现. 主要是一个用户表,它有一个年龄的字段,然后并发地对其 ...

  5. 利用mysql中if函数排序

    格式:IF(Condition,A,B) 意义:当Condition为TRUE时,返回A:当Condition为FALSE时,返回B. 作用:作为条件语句使用. select if(`from_use ...

  6. MySQL中varchar类型在5.0.3后的变化

    1.mysql varchar类型变化:mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 之 ...

  7. 关于MySQL中查询结果的count和from后的条件与where后的条件对比

    啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦 ...

  8. SQL分组多列统计(GROUP BY后按条件分列统计)

    as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...

  9. 【数据库】SQL分组多列统计(GROUP BY后按条件分列统计)

    select whbmbh ,zt,1 as tjsl from fyxx group by zt,whbmbh select whbmbh,sum(case zt when '有效' then 1 ...

随机推荐

  1. [wikioi]传纸条

    http://wikioi.com/problem/1169/ 棋盘型的动态规划,这道题可以看成是从左上角向右下角走两条不重合的路(除了开始和结尾).动态规划要想的是状态和阶段,状态是(x1,y1,x ...

  2. zImage和uImage的区别

    http://blog.csdn.net/maojudong/article/details/4178118 zImage和uImage的区别 一.vmlinuz vmlinuz是可引导的.压缩的内核 ...

  3. PCB快速打样规范

    基本情况 板材为FR-4,板厚1.6mm    板材铜厚为1/2oz,成品铜厚为1oz(加工过程中的沉铜工艺会让铜层增加厚度) 绿油白字    喷锡工艺    最小孔内铜厚1.27um    电铜18 ...

  4. 在KEIL中的模块化程序写法

    在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的.但是当程序很长的时候, ...

  5. html表格cell合并插件

    数据展示时需要合并部分数据自己写了一个简单插件 合并前: 合并后: 调用示例: var trs = $('table#dataList tbody tr').not('#demo').get(); v ...

  6. JavaScript 判断对象是否为空

    /** **判断是否null *@param data */ function isNull(data) {     return (data == "" || data == u ...

  7. AHOI2006文本编辑器editor

    1269: [AHOI2006]文本编辑器editor Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1885  Solved: 683[Submit ...

  8. Count Color POJ--2777

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32217   Accepted: 9681 Desc ...

  9. c++通过jnihelper调用java方法刷新androidUI的注意事项

    2dx android项目需接入第三方sdk完成支付,玩家点击充值界面,通过jnihelper来调用java的方法并弹出android组件界面,之前采用直调的简单方法,顺利的把参数传到java层,但后 ...

  10. PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题

    php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime     设置为on时,当数据遇到 单引号' 和 双引号" ...