oracle 分页问题解决方案

测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的,此等问题应该如何解决,本文将详细介绍

昨天做完项目后让测试测试了一把,测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的。
当时我就觉得很纳闷,不可能啊,分页组件应该是好的,咋可能有问题呢。带着疑问,我打开了自己的ide,在自己的机器上跑了一把,果然有问题。
有问题就要找问题
首先把2条查询结果相同的sql打印出来到数据库中执行:
sql1:
代码如下:
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,
t.biz_delete_time,
decode(areaid, ‘0730’, ‘0’, ‘1’) 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 >= 19
sql2:
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,
t.biz_delete_time,
decode(areaid, ‘0730’, ‘0’, ‘1’) 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 >= 12

结果显示大多数行是相同的。
为了找到问题所在,只有先一步一步的精简化sql,看在哪一步出的问题。
于是找到了,问题出现在where rownum表示想不通啊。。。。。
没办法,只好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,
t.biz_delete_time,
decode(areaid, ‘0730’, ‘0’, ‘1’) 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 >= 1 and m.rn
这个方法果然凑效,凑效是凑效,关键是为什么前面那种方法不行呢?抓问题要刨根问底。
看来baidu不行,得换google搜索了。google搜索总是喜欢被china government墙掉,没办法,网上只好找了个chrome插件才解决了。
找呀找找呀找,在oracle的ask tom上,tom详细的介绍了rownum的用法,在这里http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
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强大很多啊,以后要好好学英文,不然遇到问题没发解决。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/474809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 08:57:37
下一篇 2025年11月8日 08:58:55

相关推荐

  • Oracle APEX:掌握通过JavaScript正确调用应用程序级进程的方法

    本教程详细阐述了在Oracle APEX中通过JavaScript动态调用应用程序级进程的正确方法。它澄清了apex.submit()与apex.server.process()之间的关键区别,指出前者仅用于页面提交,而后者才是执行命名服务器端进程的AJAX首选。文章提供了示例代码和配置指导,帮助开…

    2025年12月20日
    000
  • Oracle APEX中正确调用应用程序级进程:告别apex.submit的误区

    本文探讨Oracle APEX中从页面动态操作调用应用程序级进程的常见误区。明确指出apex.submit仅用于页面提交并设置请求值,而要真正触发应用程序级进程,应使用apex.server.process进行按需AJAX调用。文章将详细介绍apex.server.process的使用方法、参数配置…

    2025年12月20日
    000
  • Node.js中如何加密数据?

    Node.js中加密数据需选用合适算法并安全管理密钥。推荐使用AES-256-GCM进行对称加密,因其提供机密性与完整性;RSA配合OAEP填充用于非对称加密,适合密钥交换;密码存储应采用bcrypt等专用哈希算法,避免MD5、SHA1。密钥绝不可硬编码,应通过环境变量、KMS或HSM安全管理,并定…

    2025年12月20日
    000
  • 什么是B+树?B+树在数据库中的作用

    B+树通过将数据存储在叶子节点并用内部节点索引,结合叶子间的链表实现高效查询与范围扫描,广泛用于数据库如MySQL的InnoDB引擎,提升检索速度;其相比二叉树和B树减少I/O次数,支持快速定位及顺序访问,适用于大容量数据存储场景。 B+树是一种自平衡的树数据结构,特别适用于磁盘存储,常被用作数据库…

    2025年12月20日
    000
  • 如何下载JDK 8中的rt.jar源码?

    在java开发过程中,常常需要参考jdk的源代码,尤其是在rt.jar中。最近有用户询问如何下载jdk 8中的rt.jar源码。虽然他们在github上找到了openjdk的源码,但下载的压缩包中没有打包好的源代码文件。此外,他们发现安装后的src.zip文件中缺少某些类,如sun.reflect.…

    2025年12月20日
    000
  • 如何获取JDK8中rt.jar的完整源码?

    如何获取JDK8中rt.jar的完整源码? 在java开发过程中,经常需要查看jdk的源码,尤其是像rt.jar这样的核心库。用户在github上找到了openjdk的源码,但发现下载的zip文件中并没有打包好的源码文件。此外,安装后的src.zip中也缺少rt.jar中某些关键的类,比如sun.r…

    2025年12月20日
    000
  • 如何下载和查看JDK 8的rt.jar源码?

    如何获取JDK 8的rt.jar源码? 在Java开发中,查看JDK源码是常见需求。特别是JDK 8中的rt.jar文件,很多开发者在寻找其源码时面临挑战。本文将详细说明如何获取JDK 8的rt.jar源码。 首先,我们需要知道,JDK 8的rt.jar文件位于JRE的lib目录中。这个文件包含了J…

    2025年12月20日
    000
  • 如何获取JDK 8中rt.jar的源码?

    JDK8 rt.jar源码获取指南 在java开发过程中,常常需要查看jdk的源码以便更好地理解和调试程序。对于java 8版本的rt.jar,获取其源码是一个常见的问题。虽然在github上可以找到openjdk的源码,但下载的压缩包中并不包含打包好的源码文件。此外,安装后的src.zip中也缺少…

    2025年12月20日
    000
  • JavaScript时间对象,某人构建了一个eactexe,在Google Chrome上更快的网站等等

    JavaScript开发者们,大家好! 欢迎阅读本周的JavaScript新闻! 本周我们将重点关注:Oracle与Deno的商标纠纷、新的JavaScript时间对象获得浏览器支持、Google Chrome的更新以及一些强大的开发者工具。 让我们开始吧! Oracle与Deno的商标之争 Ora…

    2025年12月19日
    000
  • 获得 Java 认证:实践测试的作用

    在竞争激烈的 IT 行业,Java 认证是展现您在业界最流行编程语言之一专业技能的有效途径。备考过程虽然充满挑战,但巧妙运用 Java 认证练习测试能显著提升您的成功率。本文将深入探讨练习测试(包括“Java 认证练习测试题库”)如何助您顺利通过认证考试。 为什么需要 Java 认证? Java 认…

    2025年12月19日
    000
  • 现代 Web 开发的演变和最佳实践

    简介:了解 Web 开发Web 开发通常缩写为 WebDev,是构建和维护网站或 Web 应用程序的过程。它包括从创建简单的静态页面到复杂的数据驱动的 Web 应用程序的所有内容。在当今的数字时代,网络开发已成为一项基本技能,为从个人博客到大型电子商务平台的一切提供动力。本文将探讨 Web 开发的基…

    好文分享 2025年12月19日
    000
  • #FreeJavaScript

    一万六十七天…… 我在墙上又划了一笔。真的没有空间了。成千上万的线条像伤疤一样延伸……现在,每天早上,在这个小小的四轮驱动的牢房里,这已经成为一种习惯。寒冷潮湿的空气无助于咳嗽。 不过,我还是很感谢隔壁牢房吹奏的口琴。它增加了我要讲的故事的气氛…… 我的名字是 JavaScr…

    2025年12月19日
    000
  • 后端开发人员的操作技能

    后端开发是每个应用程序的支柱,负责处理逻辑、管理数据库并确保一切在幕后顺利运行。后端开发人员在使应用程序高效、安全和用户友好方面发挥着关键作用。如果您的目标是在后端开发方面表现出色,那么掌握某些技能至关重要。以下是每个后端开发人员应重点关注的五项技能。 熟练掌握服务器端编程语言理解和掌握服务器端语言…

    2025年12月19日
    000
  • 在 PL/SQL 中绑定变量

    这是 pl/sql 中绑定变量的简单解释: 在 pl/sql 中绑定变量 绑定变量是 sql 语句中的占位符,允许您在运行时传递值,而不是将它们直接硬编码到 sql 查询中。它们对于提高数据库操作的性能和安全性特别有用。 主要特点: 占位符:绑定变量由冒号 (:) 后跟变量名称(例如:dept_id…

    2025年12月19日
    000
  • VARRAY(可变大小数组)- PLSQL 中的集合

    在 pl/sql 中,varray(可变大小数组)是一种可以存储固定数量元素的集合类型。 varray 中的每个元素都是按顺序存储的,并且所有元素的数据类型相同。 varray 的特点: 固定最大大小:定义 varray 时,指定它可以容纳的最大元素数。您不能超过此限制。 顺序:varray 中的元…

    2025年12月19日
    000
  • Oracle SQL 中的解析 |硬解析|软解析

    一般来说,在 Oracle SQL 和数据库中,解析是分解和分析 SQL 语句以确保它们在执行之前在语法和语义上正确的过程。 Oracle SQL 中有两种主要的解析类型:硬解析和软解析。这些决定了数据库处理查询需要做多少工作。 硬解析 定义:当数据库必须从头开始完全解析 SQL 查询时,就会发生硬…

    2025年12月19日
    000
  • PLSQL 中的 DBMS_OUTPUTPUT_LINE

    在 Oracle PL/SQL 中,打印输出的方法是使用 DBMS_OUTPUT.PUT_LINE 过程。该过程将文本写入控制台或输出缓冲区,如果启用了 DBMS_OUTPUT,则可以在执行后查看文本。使用方法如下: 首先,在 SQL 环境(例如 SQL*Plus 或 Oracle SQL Deve…

    2025年12月19日
    000
  • SQL 查询速度慢?使用此技术提高应用程序的性能

    挑战 在我的应用程序(react + spring boot + oracle)中,处理大型数据集导致处理时间极其缓慢。我需要一种解决方案来提高性能而不影响准确性或完整性。 解决方案:ntile + 并行处理 ntile 是一个功能强大的 sql 窗口函数,旨在将结果集划分为指定数量的大致相等大小的…

    2025年12月19日
    000
  • 揭秘合并排序:分治排序初学者指南

    归并排序由约翰·冯·诺依曼于 1945 年提出,主要是为了提高大型数据集的排序效率。冯·诺依曼的算法旨在使用分而治之的方法提供一致且可预测的排序过程。这种策略允许归并排序有效地处理小型和大型数据集,保证在所有情况下都能实现稳定的排序,时间复杂度为 o(n log n)。 合并排序采用分而治之方法,将…

    2025年12月19日
    000
  • C++框架内置功能在跨平台开发中的作用

    在跨平台开发中,c++++ 框架的内置功能发挥着至关重要的作用,包括:跨平台兼容性:在多平台上稳定运行,简化移植。图形用户界面 (gui) 支持:提供跨平台的 gui 库,无需编写平台特定代码。数据库集成:支持多种数据库系统,实现数据访问和操作的跨平台性。网络通信:提供网络通信机制,用于分布式应用程…

    2025年12月18日
    000

发表回复

登录后才能评论
关注微信