这个场景是列出一个用户和他的朋友上传的照片,按照上传日期时间排序。我有一个MySql表照片,这是动态的,包含所有用户上传的照片。
最初,我通过下面的查询得到10行数据。当我得到下一个10行的时候,用户将上传更多的照片。那么我如何从我之前已经得到的行开始选择接下来的10行呢?
select * from photo p where p.handle in (select handle from friends where user = '$handle') or p.handle='$handle' order by uldatetime desc limit ".$start.", 10;
您的数据库中必须有一些Auto increment
primary key
。假设你取记录的顺序是倒序的。假设当您开始显示结果时,您有50条记录
- 您从50到41获取记录
- 同时又插入了5条记录,因此您的最后Id从50增加到55
- 现在不是显示最近20条记录,而是获取具有主键<的最近10条记录;因此,无论在平均时间内插入的记录如何,它都会给您40到31。
所以你的查询将被更新为
select * from photo p where p.handle in (select handle from friends where user = '$handle') or p.handle='$handle' AND photo.[primarykey of photo table] < [last photo id displayed till now] order by uldatetime desc limit 0, 10;
用各自的变量和字段替换[last photo id displayed till now]
和[primarykey of photo table]
。