最近一个使用华丹WEB报表平台实现业务数据分析平台的客户遇到一个问题,为什么在查询数据进行分页时,有时数据会错位,也就是说,有些数据前页已显示,当前页又重复显示,而有些则没有显示出来。

造成这个问题是因为oracle的order by排序属于非稳定排序,比如order by name,遇到相同name的数据,每次查询其顺序是不一样的,特别是数据量大时,也即相同name数据多时尤其明显。

解决这个问题也比较简单,就是在order by 子句最后加上主键列即可,如order by name, ywid。