我想知道是否有一种方法可以从MySQL查询中获取结果的数量,同时限制结果.

分页的工作方式(据我所知),首先我做了如下工作

query = SELECT COUNT(*) FROM `table` WHERE `some_condition`

在我得到num_行(查询)之后,我得到了结果的数量.但为了限制我的结果,我必须进行第二次查询,比如:

query2 = SELECT COUNT(*) FROM `table` WHERE `some_condition` LIMIT 0, 10

我的问题是:是否既要检索将给出的结果总数,又要限制在单个查询中返回的结果?或者任何更有效的方法.谢谢

推荐答案

不,这就是需要分页的应用程序数量.它是可靠的、防弹的,尽管它提出了两次质疑.但是你可以将计数缓存几秒钟,这会有很大帮助.

另一种方法是使用SQL_CALC_FOUND_ROWS子句,然后调用SELECT FOUND_ROWS().除了必须在之后调用FOUND_ROWS()之外,还有一个问题:有a bug in MySQL个查询会影响ORDER BY个查询,这使得大型表上的查询速度比两个查询的简单方法慢得多.

Mysql相关问答推荐

使用NOT EXISTS()时出现MySQL查询错误

提高bash脚本从大型gml文件读取数据的效率

DJANGO 使用原始 MYSQL 查询计算记录数并在 html 模板中使用结果

按唯一列排序,但保持匹配的列在一起

生成json数据并根据特定表的匹配条件进行过滤

Select 同一张表中的结果数?

基于多个 where 子句在规范化表中查找公共 ID(值)

Mysql根据文本语言或行数将列拆分为多列

如何解码存储在带有type*:前缀的base64中的数据?

SQL:如何为给定组中的所有记录 Select 一列与另一列不匹配的位置

获取 TEXT 类型行的百分比

MySql,如何从列中替换某种格式的字符串

更新和替换未加引号的 JSON 字符串

MariaDB 下的慢速更新、删除和插入查询

如何使用 laravel 连接 mysql?

从 MYSQL 查询中计算列的平均值

Doctrine2 迁移向下迁移并从浏览器而不是命令行迁移

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

判断多个列的一个值

按 COUNT(*) 过滤?