FOUND_ROWS()

  SELECT语句中经常可能用LIMIT限制返回行数。有时候可能想要知道如果没有LIMIT会返回多少行,但又不想再执行一次相同语句。那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了。

例如:需要取出一张表的前10行,同时又需要取出符合条件的总数。这在某些翻页操作中很常见

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS()

表示的是:

在上一查询之后,你只需要用FOUND_ROWS()就能获得查询总数,这个数目是抛掉了LIMIT之后的结果数

其中第一个sql里面的SQL_CALC_FOUND_ROWS不可省略,它表示需要取得结果数,也是后面使用FOUND_ROWS()函数的铺垫。

第二个SELECT将返回第一条SELECT如果没有LIMIT时返回的行数,
如果在前一条语句中没有使用SQL_CALC_FOUND_ROWS选项,FOUND_ROWS()将返回前一条语句实际返回的行数。

FOUND_ROWS()得到的数字是临时的,执行下一条语句就会失效。如果想要这个数字,就要将它保存下来

 mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... ;
mysql> SET @rows = FOUND_ROWS();

如果使用 SELECT SQL_CALC_FOUND_ROWS,MySQL必须计算所有结果集的行数。尽管这样,
总比再执行一次不使用LIMIT的查询要快多了吧,因为那样结果集要返回客户端的

最新文章

  1. sql 单个字段去重查询 distinc 和 group by的效率问题
  2. js的几种数据类型
  3. 01_Spring概述
  4. Linq To Sql 语法 子查询 & In & Join
  5. 关于API的设计和需求抽象
  6. oracle 经典语句集合
  7. release management客户端无法连接到release management server的问题解决
  8. Angular 4 学习笔记 从入门到实战 打造在线竞拍网站 基础知识 快速入门 个人感悟
  9. OpenCV和selenum实现点击操作
  10. CSC 172 (Data Structures and Algorithms)
  11. JavaMap的一些常用方法
  12. faster-RCNN台标检测
  13. virtualenv 运行python 解决依赖冲突问题 尤其是django那种蛋疼的版本问题
  14. CPU简单科普
  15. Android 开发添加控件事件的三种方式
  16. JS中的history对象
  17. 关于多线程中使用ArrayList的问题
  18. PHP二维数组如何根据某个字段排序
  19. 20155231 2016-2017-2 《Java程序设计》第3周学习总结
  20. 【bzoj1502】月下柠檬树

热门文章

  1. HDU 1896 Stones --优先队列+搜索
  2. Android配置----Android开发环境搭建
  3. 第11章 Windows线程池(1)_传统的Windows线程池
  4. cnblog code syntaxhighlighter view
  5. java 16 -4 LinkedList的特有功能
  6. shell+curl监控网站页面(域名访问状态),并利用sedemail发送邮件
  7. Sublime Text 3 文本编辑器
  8. 在opencv3中的机器学习算法练习:对OCR进行分类
  9. Volly框架的使用基础版及使用中的一些坑 Ace 网络篇(三)
  10. 各种python环境的问题