我需要显示一些基于修改后的列排序的记录(顶部是最新活动)
(帖子顶部有新的编辑或评论)
应用程序用户界面具有类似“更多”发布按钮的推特,可进行无限滚动.每个“更多”都会在用户界面中添加下10条记录.
例如
假设我在作业表中有记录A,B,C,.. Z.
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 0, 10
第二次,如果没有任何记录被修改
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 10, 10
将返回K-T
但是,如果某个主体在用户单击“更多按钮”之前在J之后修改了任何记录,
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 10, 10
将返回J-S
在这里记录J被复制.我可以通过不将J插入UI来隐藏它,但是more按钮将仅显示9条记录.但是,当更新大量记录时,此机制将失败.如果修改了10条记录,查询将再次返回A-J.
如果一条记录具有多个更新,则保持第二个时间戳将失败.
服务器缓存查询?
解决方法:
我会做一个NOT IN()和一个LIMIT,而不只是一个带有预设偏移量的直线LIMIT.
SELECT * FROM Jobs WHERE name NOT IN('A','B','C','D','E','F','G','H','I','J')
ORDER BY last_modified DESC LIMIT 10
这样,您每次仍会得到最近的10个,但是您需要跟踪已经显示了哪些ID,并且对SQL查询中的ID总是负匹配.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。