这个问题我觉得应该主要是因为动态的数据导致分页出来的数据可能重复,关键在于这个动态,所以我能想到的方式大概就是,把动态的看成静态的数据,这样就不会重复
具体操作就是第一次分页查询之后,前端再做后续查询都需要带一个此次分页查数据的最后一个数据的距离字段(因为是升序,那也就是这一页里距离最大的值)作为参数传到后端,那依此参数的分页查询只查询在这个距离之后的数据的第一页即可,这样可以保证就算动态数据也不会影响之后的查询,因为有一个距离参数限制
当然这样的改动就意味着这种分页查询不再是传统的分页查询了,除了第一次是传统的分页查询,后续的分页查询其实只是查了大于距离参数的数据的第一页,永远都是第一页
不知道这样可不可以解决你的问题哈。当然我自己没有遇到过这样的业务问题,也只是纯思考,仅供参考,希望能所有帮助(??????)??
至于评论里提到的这个问题
既然题主已经接受了这种不一样的分页处理,那这个问题也就很好解决了啊,因为这个不一样的分页是靠
筛选+排序+只取第一页
做到的,那现在你说出现了有些同样距离的取不到的问题,那是因为现在的筛选条件是大于距离参数
改一下筛选即可,改为
距离>=距离参数 and id>id参数 order by 距离,id
也就是说,此时传入后端的不只是有最后一个数据的距离字段,还有最后一个数据的id
(当然前提是这个id
是自增长,亦或者不是id
,是其他任何可以体现数据新旧变化且唯一的字段即可)
如果没有这样的id
字段,那确实就无解了,也不能说无解,只能说要做到有点麻烦
比如前端拿到那页数据后,再取下一页时,要把当前页数据最大的一个距离的数据取出来,但是这个最大距离的数据也许不止一个,所以要把所有该距离的数据的id
筛选出来,作为下一页的查询条件,当然还有之前的距离参数也是查询条件,然后后端去过滤掉
这种方式前后端都要改,而且前端改动比较多,但是若有之前说的根据id>id参数
的方式的话,那前端只需要再多加一个参数即可,前端不用再多做一次筛选
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…