在开发系统软件时经常会使用oracle數据库分页,但是最近发现组装的分页sql没有问题但是每次点下一页显示数据都一样,本文简要介绍此问题的解决思路
-
我的分页sql如下所礻:
在查询过程中n1,n2,配置20、11,30、2140、31时,查询出的数据重复
-
经过分析发现根据jgdm排序后,当jgdm相同的数据有很多个时并没有给它一个排序规則,也就是说不能保证每次分页查询时的记录的rownum一致因此得到的数据也不是我们预想的,经测试的确如此
-
因此,对于此问题的解决方法如下:
第一种:修改select 语句后的order by 3 字段使排序规则有效,比如首先按机构、然后按主键或者不加排序子句,或者干脆按rowid排序都是可以的不过后者也就没有什么业务含义了。
由于是生产环境不便于修改程序,因此我没有采用此方法解决
-
第二种方法:修改排序字段的数據内容。
由于排序字段数据重复导致排序结果无规则,而抱着先解决问题的态度我就先修改数据内容,使期排序有效这里也是有技巧的,比如怎么修改lrsj字段值保证排序有效而又不用使时间字段变化太多呢?
-
经过修改后分页查询数据显示正常,不再出现重复值了
-
看来以后使用分页sql时,增加排序时一定要注意一下了
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨詢相关领域专业人士。