MYSQL:获得下一个'n'个结果

时间:2014-06-17 14:27:31

标签: php mysql sql

现在我有一个PHP脚本,它使用以下命令从MYSQL数据库获取前三个结果:

SELECT * FROM table Order by DATE DESC LIMIT 3;

在那个命令之后,我希望PHP获取接下来的三个结果,最初我将使用:

SELECT * FROM table Order by DATE DESC LIMIT 3,3;

然而,两个命令之间会有延迟,这意味着在延迟期间很可能会在表中插入一个新行。我的第一个想法是存储最后一个结果的DATE值,然后包含WHERE DATE > $stored_date,但如果条目3和4具有相同的日期,它将跳过条目4并从5开始返回结果。使用主键字段可以避免这种情况,主键字段是一个自动递增的整数。

我不确定哪种方法最好,但我觉得应该有一个更优雅和更强大的解决方案来解决这个问题,但是我很难想到它。


示例表:

-------------------------------------------
| PrimaryKey | Data |         Date        |
-------------------------------------------
|      0     |  abc | 2014-06-17 11:43:00 |
|      1     |  def | 2014-06-17 12:43:00 |
|      2     |  ghi | 2014-06-17 13:43:00 |
|      3     |  jkl | 2014-06-17 13:56:00 |
|      4     |  mno | 2014-06-17 14:23:00 |
|      5     |  pqr | 2014-06-17 14:43:00 |
|      6     |  stu | 2014-06-17 15:43:00 |
-------------------------------------------

数据是我想要的列。

2 个答案:

答案 0 :(得分:1)

Best将使用主键并选择

SELECT * FROM table WHERE pk < $stored_pk Order by DATE DESC LIMIT 3;

如果你已经自动生成PK,你应该使用 ORDER BY pk 它会更快

答案 1 :(得分:0)

我可以根据脚本的作用考虑两个选项:

您可以使用事务:在事务中执行这些查询将为您提供一致的数据视图。

或者你可以使用:

SELECT * FROM table Order by DATE DESC;

只能在需要时获取结果。