首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql:索引循环

MySql:索引循环
EN

Stack Overflow用户
提问于 2018-02-26 11:43:36
回答 1查看 340关注 0票数 0

问题

我有一个带有x行的MySql表,其中每一行都作为唯一的Id。我想给我的每个用户10行。当用户读取了每一行内容后,他单击“next”,我将返回给他10行的下一块内容(WHERE Id BETWEEN StartIndex AND StartIndex + 9)。在数据块与表重叠之前,这一切都很好。我怎样才能从一开始就有效地重新开始?

My (不太好)解决方案

得到总数:

代码语言:javascript
复制
$result = $connection->query("SELECT count(Id) AS num_rows FROM Uris");
$count = $result->fetch_assoc()["num_rows"];

然后一些if -逻辑来检查它是否重叠(伪代码):

代码语言:javascript
复制
if (StartIndex + 10 >= count)
   makeTwoMySqlCalls(BETWEEN StartIndex AND count-1, BETWEEN 0 AND 10-count-StartIndex)

有没有更好(更快)的方法来做到这一点?

对不起,这个题目,不知道该怎么称呼这个问题。

EN

回答 1

Stack Overflow用户

发布于 2018-02-26 11:54:05

使用LIMIT子句:

代码语言:javascript
复制
SELECT * FROM the_table WHERE `id` >= start_id LIMIT 10

这将从具有值idstart_id中获取最多10行。

您必须设法将start_id作为一个值放置到查询中,使用准备好的语句。

计算得到的行,如果它们小于10行,则到达最后一页。

如果它们为0,则在上一次迭代中到达最后一个页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48987741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档