分页数据获取,在获取时新增了数据的重复问题

vvtf 发布于 2016/05/25 17:24
阅读 1K+
收藏 0

描述:

    获取数据, 进行分页获取, 此时又有新增了数据, 就可能会出现下一次分页数据的重复问题.

如:

    按最新时间的倒序数据, 每页获取10条. 此时新增了一条数据, 那么这一条数据的时间则为最新的. 这个时候获取第二页的数据就第一条数据为第一页的最后一条的数据.


这种问题大家是如何解决的?

加载中
0
tomczhen
tomczhen

1.把查询时的当前时间作为条件,只取比该时间小的数据。

2.按时间正向排序,取到数据后展现时反向排序。

100条记录,每页10条,第一次查询时第一页是,91-100,

增加一条记录,101条,第二页是81-90,没影响。

tomczhen
tomczhen
回复 @vvtf : 我回答的是两种方法,不是两个步骤。根据你的问题描述,是“新增数据”后“这一条数据的时间是最新”,那么我的回答是没有问题的。现在你提出新增数据可能不是“最新”,那么,进一步看,也许还有插入“旧”时间数据的情况,我只能说,你还是直接说业务场景吧。
vvtf
vvtf
肯定有同时间的数据呢?而且正好在分页分段的时候.
0
fromdtor
fromdtor
使用最近时间。
0
loyal
loyal

这不是个问题.就这样就行了.

如果非要解决,第一次就查出前5页,然后cache.之后都是cache的数据.

或者下一页的时候 滤掉 和上一页  重复的 得出的就是全新 无重复,且满.

loyal
loyal
回复 @vvtf : 你ios/安卓 上拉下拉 那个....直接去重...适配器里是list啊,去重你不会?
loyal
loyal
回复 @vvtf : ...cache啊绝对不会少啊,你好好想想...差集
nubo
nubo
上拉往后翻只翻时间更早的数据,下拉则重新做分页查询
vvtf
vvtf
您说的过滤掉那意思是客户端处理?如果客户端处理那样数据就会少.如果服务器处理, 我怎么知道上一页的数据呢(数据是变化的)?
vvtf
vvtf
这应该是一个问题.不然iOS和Android的上拉刷新, 结果拉出来一模一样的数据,这应该就是一个大问题了. 使用cache,这个根本就没有解决问题啊, 就相当于我一次取1条,现在使用了cache就是一次取5条,但是第二次取(cache取完了),第6条还不是用重复的可能.
0
j
jingwei027
如果表有 ID (遞增流水號) 一開始可以先取得當前最大的 ID 之後的換頁 也把這個 maxId 也當成 filter condition
0
空无一长物
加一个sql条件啊,翻页的时候的查找的数据的更新时间要比前一页的最后一条的更新时间更早
0
shawnking
shawnking
分页参数用时间戳就行了,比如第一页请求时间戳是0,第二页请求的时间戳就是第一页最后一条数据的时间戳,用这个时间戳作为条件查询不会出现数据重复的问题!
0
空香沾手
空香沾手
蛋疼,为啥要处理?重复了也没多大关系,DB中并不重复,用户看到的某一页也不是重复的。
0
我的名子
我的名子
使用crtime条件查询就可以了啊。
返回顶部
顶部