SQL:从动态表

时间:2016-12-14 10:50:57

标签: mysql sql

我有一个名为articles的SQL表,我从中加载按页划分的行。我的SQL是

SELECT ...
ORDER BY $orderCol DESC
LIMIT $offset, $numPerPage

第一页的限制为0, $numPerPage,第二页为$numPerPage, 2 * $numPerPage等。

问题:在加载第2页之前插入新行时,第1页的最后一篇文章将是第2页中的第一篇文章等。我该如何避免这种情况?

我考虑添加一个WHERE子句来从上一个$orderCol开始选择文章,但这个字段不是唯一的(在我的情况下它是一个约会对象)所以我会这样做在这里错过具有相同价值的文章。主索引也是一个问题,因为它的排序方式与$orderCol

的排序方式不同

新添加的行不必出现在任何位置。这需要刷新。

2 个答案:

答案 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,用于所有后续查询。然后,偏移量就是到目前为止写的文章数量。