我有一个名为articles
的SQL表,我从中加载按页划分的行。我的SQL是
SELECT ...
ORDER BY $orderCol DESC
LIMIT $offset, $numPerPage
第一页的限制为0, $numPerPage
,第二页为$numPerPage, 2 * $numPerPage
等。
问题:在加载第2页之前插入新行时,第1页的最后一篇文章将是第2页中的第一篇文章等。我该如何避免这种情况?
我考虑添加一个WHERE
子句来从上一个$orderCol
开始选择文章,但这个字段不是唯一的(在我的情况下它是一个约会对象)所以我会这样做在这里错过具有相同价值的文章。主索引也是一个问题,因为它的排序方式与$orderCol
新添加的行不必出现在任何位置。这需要刷新。
答案 0 :(得分:1)
你的LIMIT
应该是下面的内容。定义一个$page
变量,该变量将从您想要的1 .. no.of pages
更改。
LIMIT $offset, $page * $numPerPage
好的,在这种情况下,您每次(刷新时)都必须重新计算$pages
和$numPerPage
变量,并相应地定义分页。
答案 1 :(得分:0)
我找到的解决方案是在WHERE子句中添加一个条件。
Rahul建议我应该计算自上一个查询以来的新文章并将其添加到偏移量中。这很棘手,因为计算文章意味着我可以运行一个停止前一个开始的查询,如果我有办法做到这一点,我可以很容易地使第二个查询从第一个开始EM>结束
所以我意识到我需要一个新专栏。我将其称为date-added
,新条件为date-added < $time-of-first-query
,用于所有后续查询。然后,偏移量就是到目前为止写的文章数量。