从动态MySql表中的第n行开始获取m行

时间:2015-10-08 07:50:24

标签: php mysql database

该方案是列出用户及其朋友按上传日期时间排序上传的照片。我有一个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;

1 个答案:

答案 0 :(得分:1)

您的数据库中必须有一些Auto increment primary key。并且说你正在以相反的顺序获取记录。假设你开始显示结果时有50条记录

  1. 你从50到41
  2. 取得了记录
  3. 意味着插入了另外5条记录,因此您的上一个ID从50增加到55
  4. 现在不是显示最后20条记录,而是获取具有主键<10的最后10条记录。因此,无论平均时间插入的记录如何,它都会给你40到31分。
  5. 因此,您的查询将更新为

    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]替换为相应的变量和字段。