ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql-基于最后修改的属性排序时的分页问题

2019-11-22 04:15:40  阅读:223  来源: 互联网

标签:postgresql pagination sql mysql sql-server


我需要显示一些基于修改后的列排序的记录(顶部是最新活动)
(帖子顶部有新的编辑或评论)

应用程序用户界面具有类似“更多”发布按钮的推特,可进行无限滚动.每个“更多”都会在用户界面中添加下10条记录.

问题是,修改任何要显示的记录时,分页索引都会中断

例如
假设我在作业表中有记录A,B,C,.. Z.

我第一次使用来向用户显示记录A-J

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总是负匹配.

标签:postgresql,pagination,sql,mysql,sql-server
来源: https://codeday.me/bug/20191122/2057033.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有