首先对于java开发,oracle进行分页时,要有三层进行查询
SELECT *
FROM (SELECT T.*, ROWNUM RN
FROM (SELECT * FROM text ORDER BY ts DESC) T
WHERE ROWNUM < 20)
WHERE
RN >20
首先,说下这种写法的原因,如果我们直接对目标表进行查询
SELECT t.*,ROWNUM RN FROM text t ORDER BY ts DESC
如果是按照上边的写法的话,数据查询处理就不准了,因为rownum是查询出一条数据然后累加1的,这样我们查询完如果不进行order by排序,rownum是没有问题的,从1开始,但是排序后,rownum就被打乱了,这样查询某个区间段的时候就不是我们想要的结果(比如,查询1-10,查询的就可能不是排序后的前10个,因为排序后rownum已经错位了)。这就是为什么中间要加2层查询的理由。
那么,最外层查询也是有理由的,最外层的原因是因为rownum不能查询大于,所以对这个结果集中的rownum在加一层查询大于。
现在解释一下,为什么不能查询大于,因为如果加了大于的条件,那么查询的结果集会是空集,因为比如我查询>1的数据时,首先第一条的rownum是1,然后不符合,把数据踢出去,此时第二条的rownum变成1,继续还是不满足,依次,到最后肯定结果集是空的。所以只能在结果集的外面加一层查询进行过滤,不能直接过滤。
然后说一下会出现的问题,即使我们安装这种方式来分页查询,也会遇到其他一些问题,一个很容易出现的问题就是查询的结果集是错乱的,比如第一页的数据,在第二页也会有,而有些数据在所以页面都没有,这个问题的原因是因为ORDER BY后面的字段重复造成的。
今天在项目中就遇到了这个问题,最后发现是批量同步插入数据的时候,时间戳可能会重复,此时如果安装时间戳进行排序的话,就会出现上面说的这种情况,因为oracle的sort机制原因,不能保证每次查询时间戳相等时都是相同顺序的数据。
上面问题的解决方法可以在排序条件时加上唯一标识 比如ID
ORDER BY (ts||ID) desc
这样就可以解决这个问题
分享到:
相关推荐
在项目中,你可能会遇到如事务处理、异常处理、分页查询、性能优化等问题,这些都是在实际开发中需要考虑的关键点。通过这个小代码项目,你可以深入理解SSH框架与Oracle数据库集成的全过程,提升你的Java Web开发...
在Java与Oracle应用开发中,会遇到一些常见问题,这些问题涉及到驱动程序加载、大对象存储以及可滚动结果集的处理。以下是对这些问题的详细解释: 1. **驱动程序加载**: - **Class.forName(String)**:这个方法...
在Java开发中,分页是常见的功能之一,特别是在处理大量数据时,为了提高用户体验和页面加载速度,通常会采用分页展示数据。标题提到的是一个由Java编写的自定义分页标签,它允许开发者在JSP页面上方便地实现分页...
在实际开发中,我们常常会遇到分页功能在多个页面中重复出现的情况。为了解决代码重复和提高开发效率,我们可以将分页展示的组件化。这意味着将首页、上一页、下一页和尾页等元素封装成一个独立的JSP或Java组件,...
Java 分页查询是Java开发中常见的一种数据处理技术,尤其在大数据量的Web应用中,为了提高用户体验并减少服务器压力,通常需要实现分页显示数据。以下是对标题"java分页 find"和描述中涉及的知识点的详细说明。 1. ...
这个小插件的出现,正是为了解决这个问题,它提供了友好的API,使得在Java代码中进行分页查询变得更加简单。 该小插件的核心功能可能包括以下几点: 1. **简化SQL构造**:通过插件提供的方法,开发者可以轻松地...
在报表开发过程中,遇到问题时,有效的异常处理和调试技巧是必不可少的。学会使用Java的try-catch语句捕获异常,结合日志框架(如Log4j、SLF4J)记录错误信息,以便快速定位和解决问题。 8. **性能优化** 对于大...
虽然分页插件简化了开发,但也需要注意性能问题。例如,当数据量较大时,OFFSET的使用可能导致性能下降。此时,可以考虑使用其他的分页策略,如游标分页或基于主键的分页。 8. **源码分析** 分析源码可以帮助我们...
在Java开发中,数据库操作是不可或缺的一部分,尤其是在处理大量数据时,分页查询显得尤为重要。分页不仅可以提高页面加载速度,还可以减少服务器负担,优化用户体验。本篇文章将深入探讨如何在Java中运用存储过程...
【JAVA 开发jsp报名系统...总之,这个JAVA开发的JSP报名系统涵盖了Java编程、JSP动态网页开发、数据库操作、MVC设计模式以及安全性等多个关键知识点,是一个综合性的项目,对于学习和实践Java Web开发具有很高的价值。
Java论坛管理系统设计是一个涵盖多个IT...通过这个项目,开发者可以深入理解Java Web开发流程,掌握数据库设计和管理,以及提高解决实际问题的能力。源代码和论文可以作为学习参考,帮助初学者理解和实践上述知识点。
在JavaWeb开发中,PageHelper是一个非常常用的分页插件,它简化了数据库查询的分页操作,使得在处理大量数据时能有效地管理和展示信息。本压缩包包含的"模拟pageHelper的JavaWeb分页源码与开发文档"提供了一个理解和...
【标题】: "基于Java开发的汽车查询小程序详解" 【描述】: 在现代技术日新月异的时代,Java作为一款广泛应用的编程语言,被广泛应用于各种软件开发领域,包括小程序的构建。本项目是一个基于Java技术开发的汽车查询...
5. 错误处理:添加异常处理机制,确保系统在遇到问题时能够优雅地处理并给出反馈。 通过阅读博主的博文(链接已提供),你可以获取更具体的实现细节和技巧,了解如何将这些技术有效地结合在一起,构建出一个高效、...
这有助于在遇到问题时快速定位并解决。 10. **TestPro项目**:这个项目名称可能指的是测试程序,通常包括单元测试和集成测试,用于确保EXTjs与Oracle的交互符合预期,功能正常运行。 综上所述,EXTjs+Oracle的组合...
在Web开发领域,构建一个留言板系统是初学者到专业开发者都会遇到的经典项目。这个项目旨在帮助用户通过网页向网站发布消息、提问或分享观点,同时其他用户可以浏览这些留言并进行回复。Java作为广泛使用的后端开发...
如果您是公司或项目负责人,一定会遇到这样的情况,公司拥有众多的java开发高手,而开发习惯也各式各样,因而对项目接手的维护人员的技术要求也相应需要提高,这样项目的投入成本自然增加,而企业的利润也相应减少...
系统还应包含错误处理和异常管理机制,确保在遇到问题时能提供合适的反馈。 总结来说,SSH 图书管理系统结合了Struts2、Spring和Hibernate的优势,实现了用户友好的图书管理界面和高效的数据处理能力。通过分页功能...
同时,确保你的应用程序具有良好的错误处理和日志记录机制,以便在遇到问题时能够快速定位和解决。 在这个名为`demo`的项目中,可能包含了这些步骤的实现代码,你可以通过查看源码进一步学习和理解。通过这样的实践...