分页查询数据重复——第三种情况

小白的上班常态:
每天不是玩bug就是被bug玩,每天痛并快乐着

干货:
分页查询数据重复的情况,一般原因:1.order by 排序字段不是唯一主键或者有重复数据导致造成;2.在翻页过程中有新数据插入导致数据读写冲突导致造成
解决办法:1.使用order by 排序时,加上主键或者不会重复的字段(一般建议唯一主键,如果选择时间字段,数据量过大时,有可能会重复,导致分页数据乱序或重复);2.如果每页数量固定,可以在前段传入数据时,主键部位设置为自增id,避免插入数据之后导致传值不变,而数据库实际增加,导致的数据重复问题。

那么博主今天遇到的第3种情况是:
在复杂SQL中,从总体数据中获取的每页数据排序正常,而从总体数据中获取数据时却是随机获取的,每页设置固定数据参数也随意改变,该问题如何解,困惑了博主20多小时?
解决思路:把SQL从代码中摘出来单独测试,发现获取的数据每页都有重复,在尝试去重过程中,使用distinct关键字尝试问题无法解决,后尝试group by进行去重,初见效果,SQL语句放回代码中测试,乱序/重复问题和每页显示数据不固定问题统统得到解决。最后在检查SQL发现是负责语句中多重left on连接查询导致出现重复数据。
最后,时刻提醒自己细心细心,遇到问题多尝试(即将被上一个工程师拉黑),每个bug在最后反过来看的时候都是一段成长。

小白记,大佬可绕行!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值