知识大全 oracle 分页问题解决方案

Posted

篇首语:学问之根苦,学问之果甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle 分页问题解决方案相关的知识,希望对你有一定的参考价值。

  昨天做完项目后让测试测试了一把 测试说分页查询貌似不起作用 翻到第 页以后 看到的数据结果都是相同的 当时我就觉得很纳闷 不可能啊 分页组件应该是好的 咋可能有问题呢 带着疑问 我打开了自己的ide 在自己的机器上跑了一把 果然有问题 有问题就要找问题 首先把 条查询结果相同的sql打印出来到数据库中执行 sql

  复制代码 代码如下:

  select * from (select t * rownum rn from (select t_e_id t_e_name t_e_tel t_e_areacode from (select t eid t_e_id t ename t_e_name t etel t_e_tel t areaid t_e_areacode _delete_time decode(areaid ) orderseq from vr_enterprise t where t eid not in (select eid from t_biz_erelation)) order by orderseq biz_delete_time nulls last) t where rownum < ) where rn >= sql select * from (select t * rownum rn from (select t_e_id t_e_name t_e_tel t_e_areacode from (select t eid t_e_id t ename t_e_name t etel t_e_tel t areaid t_e_areacode _delete_time decode(areaid ) orderseq from vr_enterprise t where t eid not in (select eid from t_biz_erelation)) order by orderseq biz_delete_time nulls last) t where rownum < ) where rn >=

结果显示大多数行是相同的 为了找到问题所在 只有先一步一步的精简化sql 看在哪一步出的问题 于是找到了 问题出现在where rownum< 的时候数据改变了 为什么加了个where条件结果就会变呢? 表示想不通啊 没办法 只好baidu了 baidu了半天 都没人给个解释啊 后来同事说 换个写法试试 于是改了另一种写法 如下

  复制代码 代码如下:

  select * from (select t * rownum rn from (select t_e_id t_e_name t_e_tel t_e_areacode from (select t eid t_e_id t ename t_e_name t etel t_e_tel t areaid t_e_areacode _delete_time decode(areaid ) orderseq from vr_enterprise t where t eid not in (select eid from t_biz_erelation)) order by orderseq biz_delete_time nulls last) t)m where m rn >= and m rn <

这个方法果然凑效 凑效是凑效 关键是为什么前面那种方法不行呢?抓问题要刨根问底 看来baidu不行 得换google搜索了 google搜索总是喜欢被china government墙掉 没办法 网上只好找了个chrome插件才解决了 找呀找找呀找 在oracle的ask tom上 tom详细的介绍了rownum的用法 在这里l One important thing about using this pagination query is that the ORDER BY statement should order by something unique If what you are ordering by is not unique you should add something to the end of the ORDER BY to make it so 看到这样一句话 原来用order by的时候还需要增加order by的唯一性 不然rownum就会有问题 哇哈哈哈 太开心了 功夫不费有心人呀 找到问题的症结了 当然就好解决了 这权当是一次排错的经历 特此记录下来 看来google还是比baidu强大很多啊 以后要好好学英文 不然遇到问题没发解决 cha138/Article/program/Oracle/201405/30859

相关参考

知识大全 Oracle常见SQL分页实现方案

Oracle常见SQL分页实现方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Oracle

知识大全 Oracle分页查询中排序与效率问题

Oracle分页查询中排序与效率问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  原始未分页查

知识大全 oracle存储过程分页代码

  oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧!  /*******存储过程分页代码**********/  包头  createorreplacepackagepck

知识大全 oracle中rownum对排序的影响及解决方法

  标准的rownum分页查询使用方法  select*     from(selectc*rownumrnfromcontentc) &n

知识大全 oracle分页详解(rownum与orderby)

  Oracle的分页是通过rownum实现的  rownum是一个伪列是oracle系统自动为查询返回结果的每行分配的编号第一行为第二行为以此类推  一个oracle分页至少要包含三层(除非不用or

知识大全 特殊需求下Oracle分页的加速

特殊需求下Oracle分页的加速  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle分页

知识大全 oracle,sqlserver2000分页查询

  前台Ext后台ibatis 数据库分页  ORACLE:  SELECT*FROM(SELECT A*ROWNUMRNFROM表名AWHERE 字段名LIKE(%||

知识大全 oracle分页存储过程

  createorreplacepackagemypack  as  typecursortestCursorisrefcursor;  endmypack;  tableName表名pageSiz

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

知识大全 jsp+oracle分页实现

  今天做了个基于jsp+oracle分页的实现对于初学者来说这是好的(看了后绝对可以自己实现动手试试把)但是对于有基础的只是温故下sql语句(没涉及到很好的分层)好了我们开始把它实现把 &