问题
我有一个带有x行的MySql表,其中每一行都作为唯一的Id。我想给我的每个用户10行。当用户读取了每一行内容后,他单击“next”,我将返回给他10行的下一块内容(WHERE Id BETWEEN StartIndex AND StartIndex + 9)。在数据块与表重叠之前,这一切都很好。我怎样才能从一开始就有效地重新开始?
My (不太好)解决方案
得到总数:
$result = $connection->query("SELECT count(Id) AS num_rows FROM Uris");
$count = $result->fetch_assoc()["num_rows"];然后一些if -逻辑来检查它是否重叠(伪代码):
if (StartIndex + 10 >= count)
makeTwoMySqlCalls(BETWEEN StartIndex AND count-1, BETWEEN 0 AND 10-count-StartIndex)有没有更好(更快)的方法来做到这一点?
对不起,这个题目,不知道该怎么称呼这个问题。
发布于 2018-02-26 11:54:05
使用LIMIT子句:
SELECT * FROM the_table WHERE `id` >= start_id LIMIT 10这将从具有值id的start_id中获取最多10行。
您必须设法将start_id作为一个值放置到查询中,使用准备好的语句。
计算得到的行,如果它们小于10行,则到达最后一页。
如果它们为0,则在上一次迭代中到达最后一个页面。
https://stackoverflow.com/questions/48987741
复制相似问题