首页 >后端开发 >php教程 >如何在带有偏移量和限制的 MySQL 分页中查找结果总数?

如何在带有偏移量和限制的 MySQL 分页中查找结果总数?

Patricia Arquette
Patricia Arquette原创
2024-10-23 10:33:02445浏览

How Can I Find the Total Count of Results in MySQL Pagination with Offset and Limit?

在 MySQL 中查找具有偏移和限制的总结果

分页允许用户以可管理的块的形式浏览大型数据集。但是,确定总页数需要知道结果总数。当使用偏移量和限制进行分页时,运行相同的查询两次似乎效率很低,一次有限制,一次没有限制。

SQL_CALC_FOUND_ROWS:解决方案

要解决这个问题,MySQL提供了一个特殊的关键字:SQL_CALC_FOUND_ROWS。通过将此关键字添加到查询的开头,MySQL 将计算并存储在没有 LIMIT 子句的情况下返回的总行数。

示例查询:

<code class="sql">SELECT SQL_CALC_FOUND_ROWS * 
FROM table_name 
WHERE category_id = '1' 
ORDER BY date_created DESC
LIMIT 10 OFFSET 20;</code>

检索结果总数:

执行上述查询后,您可以使用以下 PHP 代码检索结果总数:

<code class="php">$totalRows = $db->query('SELECT FOUND_ROWS() AS total')->row()->total;</code>

SQL_CALC_FOUND_ROWS 的好处:

  • 提高效率:无需运行两次查询。
  • 准确性: 即使基础数据在查询之间发生变化,也能保证总计数正确。
  • 简单性: 使用单个关键字即可轻松实现。

以上是如何在带有偏移量和限制的 MySQL 分页中查找结果总数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn