oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

oracle 分页问题解决方案

来源:网络整理  作者:网络  发布时间:2020-12-13 13:45
测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的,此等问题应该如何解决,本文将详细介绍...
找呀找找呀找,在oracle的ask tom上,tom详细的介绍了rownum的用法,在这里
为了找到问题所在,只有先一步一步的精简化sql,看在哪一步出的问题。
有问题就要找问题:


sql2:
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
from vr_enterprise t


where m.rn >= 1 and m.rn <25

t.etel t_e_tel,
from vr_enterprise t
where t.eid not in (select eid from t_biz_erelation))


from (select t.*, rownum rn
t.areaid t_e_areacode,
这权当是一次排错的经历,特此记录下来,看来google还是比baidu强大很多啊,以后要好好学英文,不然遇到问题没发解决。

t.ename t_e_name,
from (select t.eid t_e_id,
t.ename t_e_name,
select *
from (select t.*, rownum rn
看来baidu不行,得换google搜索了。google搜索总是喜欢被china government墙掉,没办法,网上只好找了个chrome插件才解决了。
where rn >= 19
t.etel t_e_tel,
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.
from (select t.*, rownum rn
这个方法果然凑效,凑效是凑效,关键是为什么前面那种方法不行呢?抓问题要刨根问底。
首先把2条查询结果相同的sql打印出来到数据库中执行:
t.biz_delete_time,
t.biz_delete_time,
表示想不通啊。。。。。
当时我就觉得很纳闷,不可能啊,分页组件应该是好的,咋可能有问题呢。带着疑问,我打开了自己的ide,在自己的机器上跑了一把,果然有问题。
看到这样一句话,原来用order by的时候还需要增加order by的唯一性,不然rownum就会有问题。哇哈哈哈,太开心了,功夫不费有心人呀,找到问题的症结了,当然就好解决了。
order by orderseq, biz_delete_time nulls last) t)m
decode(areaid, '0730', '0', '1') orderseq

复制代码 代码如下:

复制代码 代码如下:

decode(areaid, '0730', '0', '1') orderseq
t.areaid t_e_areacode,
后来同事说,换个写法试试,于是改了另一种写法,如下:
from (select t.eid t_e_id,
where rownum < 25)
t.etel t_e_tel,
order by orderseq, biz_delete_time nulls last) t
where rownum <18)

昨天做完项目后让测试测试了一把,测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的。
from (select t.eid t_e_id,
select *
where rn >= 12
sql1:
where t.eid not in (select eid from t_biz_erelation))
from vr_enterprise t
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
decode(areaid, '0730', '0', '1') orderseq
没办法,只好baidu了,baidu了半天,都没人给个解释啊。。。。。
t.areaid t_e_areacode,
t.biz_delete_time,
t.ename t_e_name,
order by orderseq, biz_delete_time nulls last) t
where t.eid not in (select eid from t_biz_erelation))

from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
于是找到了,问题出现在where rownum<18的时候数据改变了,为什么加了个where条件结果就会变呢?
select *
结果显示大多数行是相同的。

相关热词: 分页 oracle 解决

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/oracle/3306.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

oracle 分页问题解决方案

2020-12-13 编辑:网络

找呀找找呀找,在oracle的ask tom上,tom详细的介绍了rownum的用法,在这里
为了找到问题所在,只有先一步一步的精简化sql,看在哪一步出的问题。
有问题就要找问题:


sql2:
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
from vr_enterprise t


where m.rn >= 1 and m.rn <25

t.etel t_e_tel,
from vr_enterprise t
where t.eid not in (select eid from t_biz_erelation))


from (select t.*, rownum rn
t.areaid t_e_areacode,
这权当是一次排错的经历,特此记录下来,看来google还是比baidu强大很多啊,以后要好好学英文,不然遇到问题没发解决。

t.ename t_e_name,
from (select t.eid t_e_id,
t.ename t_e_name,
select *
from (select t.*, rownum rn
看来baidu不行,得换google搜索了。google搜索总是喜欢被china government墙掉,没办法,网上只好找了个chrome插件才解决了。
where rn >= 19
t.etel t_e_tel,
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.
from (select t.*, rownum rn
这个方法果然凑效,凑效是凑效,关键是为什么前面那种方法不行呢?抓问题要刨根问底。
首先把2条查询结果相同的sql打印出来到数据库中执行:
t.biz_delete_time,
t.biz_delete_time,
表示想不通啊。。。。。
当时我就觉得很纳闷,不可能啊,分页组件应该是好的,咋可能有问题呢。带着疑问,我打开了自己的ide,在自己的机器上跑了一把,果然有问题。
看到这样一句话,原来用order by的时候还需要增加order by的唯一性,不然rownum就会有问题。哇哈哈哈,太开心了,功夫不费有心人呀,找到问题的症结了,当然就好解决了。
order by orderseq, biz_delete_time nulls last) t)m
decode(areaid, '0730', '0', '1') orderseq

复制代码 代码如下:

复制代码 代码如下:

decode(areaid, '0730', '0', '1') orderseq
t.areaid t_e_areacode,
后来同事说,换个写法试试,于是改了另一种写法,如下:
from (select t.eid t_e_id,
where rownum < 25)
t.etel t_e_tel,
order by orderseq, biz_delete_time nulls last) t
where rownum <18)

昨天做完项目后让测试测试了一把,测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的。
from (select t.eid t_e_id,
select *
where rn >= 12
sql1:
where t.eid not in (select eid from t_biz_erelation))
from vr_enterprise t
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
decode(areaid, '0730', '0', '1') orderseq
没办法,只好baidu了,baidu了半天,都没人给个解释啊。。。。。
t.areaid t_e_areacode,
t.biz_delete_time,
t.ename t_e_name,
order by orderseq, biz_delete_time nulls last) t
where t.eid not in (select eid from t_biz_erelation))

from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
于是找到了,问题出现在where rownum<18的时候数据改变了,为什么加了个where条件结果就会变呢?
select *
结果显示大多数行是相同的。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/oracle/3306.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页