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

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

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐