oracle 数据库分页中的order by 后数据重复问题

 时间:2024-10-15 13:50:04

1、我的分页sql如下所示:select * from(  select rownum rowno,tt.* from(   selecta.* 熠硒勘唏from ... a   where.... ordery by ...,lrsj  )tt where rownum<=n1  ) table_alias where table_alias.rowno>n2在查询过程中n1,n2,配置20、11,30、21,40、31时,查询出的数据重复

oracle 数据库分页中的order by 后数据重复问题
oracle 数据库分页中的order by 后数据重复问题

2、经过分析发现,根据jgdm排序后,当jgdm相同的数据有很多个时,并没有给它一个排序规则,也就是说不能保证每次分页查询时的记录的rownum一致。因此得到的数据也不是我们预想的,经测试的确如此。

3、因此,对于此问题的解决方法如下:第一种:修改select语句后的order by字段,使排序规则有效,比如,首先按机构、然后按主键或者不加排序子句,或者干脆按rowid排序都是可以的,不过后者也就没有什么业务含义了。由于是生产环境,不便于修改程序,因此我没有采用此方法解决。

4、第二种方法:修改排序字段的数据内容。由于排序字段数据重复,导致排序结果无规则,而抱着先解决问题的态度,我就先修改数据内容,使期排序有效。这里也是有技巧的,比如憾魄蜒祓怎么修改lrsj字段值保证排序有效,而又不用使时间字段变化太多呢?我的做法是,lrsj=lrsj+rownum/24/60/60,也就是按行号增加1秒。sql如下:update ... a set a.lrsj=(select b.lrsj+rn/24/60/60 from(select a.rowid rid,rownum rn,a.* from ... a) b where a.rowid=b.rid )

oracle 数据库分页中的order by 后数据重复问题

5、经过修改后,分页查询数据显示正常,不再出现重复值了。

  • 王者怎么快速提升英雄熟练度?
  • 王者荣耀怎么开启敌方出现描边
  • 钉钉怎么开启打卡提醒功能
  • 山东医师定考如何进行认定?
  • ol是什么职业呀
  • 热门搜索
    七夕节手抄报 清明节的手抄报图片 关于健康的手抄报 环保手抄报图片大全 清明节手抄报大全图片 关于读书的手抄报图片 重阳节手抄报简单又漂亮 禁毒手抄报内容写什么 春节手抄报内容文字 端午节手抄报模板