2015-10-08 24 views
1

该场景是列出用户和他的朋友上传的照片,并按上传日期时间排序。我有一个MySql表格照片,它是动态的,包含所有用户上传的照片。获取m从动态MySql表中的第n行开始的行

最初我通过下面的查询得到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; 
+0

@ b0s3是的,即使我这样做。 Theres有机会获得我已经得到的行。 – Siva

+1

这是你可以通过数据库引擎解决的问题。为此,您必须跟踪会议内容并记住您选择的最后一张照片(通过其ID)。然后,您可以添加另一个“WHERE”子句,只选择ID较高的照片。 – arkascha

+0

@arkascha谢谢! – Siva

回答

1

你必须有一些Auto incrementprimary key在数据库中。并说你正在以相反的顺序提取记录。说你有50条记录,当你开始显示结果

  1. 您获取记录从50到41
  2. 平均值,而5个记录得到了插入这样你的最后一个ID为50,而不是上升到55
  3. 现在显示的去年20个取记录最近10条记录具有主键< 41因此它会给你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]

+0

嗯,通过这种方法,我第一次获取数据的最后一张照片的ID为999999.你能给我一个更好的方法吗? – Siva

+0

第二次发送最后一张照片id = 999999-10然后第三次发送最后一张照片id = 999999-20等 – Arpita

+0

好的。谢谢 – Siva

相关问题