现在我有一个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 | -------------------------------------------
数据是我想要的列。
答案 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;
只能在需要时获取结果。