分页查询中出现重复数据
今天遇到一个问题是页面在分页展示数据的时候,同一条数据重复出现在多个页面上,在排除掉数据本身的问题后,确定是查询sql的问题。
该问题的原因是:我们在分页查询数据的时候sql的写法是(插入示例sql)
其中row_number() over (order by date_hire desc) as num是问题的关键,因为date_hire字段在数据库中存在大量的重复数据,所以在order by 排序处理的时候,对于date_hire值相同的数据就会随机排列。也就是说,在查询第一页的时候,因为字段值相同的原因,排序时A数据排在前被查出来了,在查询第二页的时候,A可能因为这次查询排序靠后又被查出来了。
解决:将 order by date_hire desc 多增加一些排序条件 例如:order by date_hire desc,userId