`
wt8414
  • 浏览: 44401 次
  • 性别: Icon_minigender_1
  • 来自: 合肥市
文章分类
社区版块
存档分类
最新评论
阅读更多
ORACLE分页一直是比较麻烦的一件事情,它没有MYSQL的LIMIT关键字,只有通过伪列ROWNUM来实现,如果不用排分页其实很简单,在此不述。
排序分页中如果要排序的字段有很多相同值的情况下只使用2层嵌套查询则可能出现数据混乱,所以只能采用三层嵌套查询。
排序分页使用下面的嵌套语句:
select * from (select rownum as r,t.* from(select tableName.* from tableName order by tableColum DESC) t where rownum<=endPos) where r>startPos

目前在hibernate3.1及以下的版本中好像没有采用这种三层嵌套查询(3.2我没试过)所以要在hibernate中实现排序分页只有自己写SQL语句了。
看来我们想完全依赖hibernate来实现一些常规的查询还是会有一点的困难。
而且三层嵌套的语句在阅读上并不直观。
相对说MYSQL的LIMIT用起来就比较舒服了,很简洁。
不知道这次ORACLE收购SUN会不会把MYSQL中的LIMIT给加入到自己的产品中去。
让我们拭目以待吧

分享到:
评论
7 楼 mikewang 2009-07-02  
jacklondon 写道
SQL standard 2003 新带来的 SQL 窗口函数(Window function) ROW_NUMBER() OVER () , 数据库 SQL server 2005/DB2/Oracle 都支持,Oracle 与标准略为有点差别。 Mysql/PostgreSQL 则不支持 ROW_NUMBER()。
我觉得还是 limit 最好用。只是不知道为什么其他数据库厂商都不用,也不知道 SQL 标准委员会为什么不用,不知道有没有中国人在SQL 标准委员中。


我为postgresql 捐献过代码, 也在postgresql 全球开发组中混过几天, 大部分数据库不支持limit x offset y的原因是存储设计的时候没有考虑到这个问题。而且从海量存储的角度上来说, 在当时(上世纪70年代末) 的条件和技术,也没法实现这个功能。

postgresql , mysql 起步都比较晚, 而且postgresql 也起源于一个学院内部的实验项目,所以在其中包含一些超前的设计也是在情理之中的。
6 楼 对酒当歌,人生几何 2009-07-01  
学习。。。
5 楼 rory 2009-05-17  
是啊,Dialect中有各种数据库截取数据处理过程
4 楼 grave 2009-05-16  
Hibernate3里早就有了..
自己看看Dialect..
3 楼 minma_yuyang 2009-05-15  
SELECT x.* from (  
     SELECT z.*,rownum numbers from(select * from tableName order by tableColum ) z  
     where rownum<maxNum) x   
where x.numbers>minNum 
2 楼 fjlyxx 2009-05-08  
select * from (
select rownum as r,t.* from(
select tableName.* from tableName order by tableColum DESC
) t where rownum<=endPos) where r>startPos 
我只想说一句  排序放错地方了
1 楼 inputer 2009-05-08  
非常不美观、、

相关推荐

    Oracle 3种分页SQL方法比较

    本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...

    Oracle的SQL分页实践

    在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...

    oracle sql分页语句

    Oracle SQL分页语句是数据库查询中的一个重要概念,它允许我们从海量数据中按需获取特定范围的结果,比如第一页、第二页等。在Oracle数据库系统中,实现分页查询通常使用ROWNUM伪列或者结合RANK()、DENSE_RANK()、...

    如何解决Oracle分页查询中排序与效率问题

    Oracle 分页查询优化与排序解决方案 本文主要解决 Oracle 分页查询中排序与效率问题,通过实践和分析,提供了两种解决方案,并对比了两种方法的优缺点。 知识点 1: Oracle 分页查询的基本概念 Oracle 分页查询是...

    oracle分页查询sql

    ### Oracle分页查询详解 #### 一、分页查询的重要性 在数据库操作中,分页查询是一项非常重要的技术。尤其当处理大量数据时,一次性获取所有数据不仅会消耗大量的网络带宽,还可能导致前端页面加载缓慢,用户体验...

    oracle的 分页sql语句

    ### Oracle 分页 SQL 语句详解 #### 一、引言 在数据库操作中,分页查询是非常常见的需求之一,特别是在大数据量的情况下,通过分页技术可以有效地提高系统的响应速度和用户体验。Oracle 数据库提供了多种方式进行...

    Oracle分页(limit方式的运用)

    ### Oracle分页(LIMIT方式的运用) 在数据库查询操作中,分页是非常常见的需求之一,尤其是在数据量较大的情况下,为了提高用户体验以及减轻服务器压力,我们需要将数据分成若干个页面进行展示。Oracle数据库作为...

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    Oracle 分页存储过程 SQL

    Oracle 分页存储过程 SQL Oracle 分页存储过程 SQL

    oracle 分页类文件

    `ShowSQL.java`可能会包含生成这类复杂SQL的静态方法,接收页码和每页记录数作为输入,返回符合Oracle语法的分页SQL。同时,为了提高性能,可能还会涉及优化SQL,比如使用索引来加速查询。 在实际使用中,开发者...

    mysql分页,oracle分页,sql server三种数据库实现分页

    mysql,oracle,sql server分页总结与比较

    sql 分页 oracle mysql sqlserver

    sql 分页 针对oracle mysql sqlserver 等数据库的通用类

    jdbc 分页 sql语句

    ### JDBC分页SQL语句详解 #### 一、引言 在数据库操作中,分页查询是非常常见且重要的一个功能。对于大型应用而言,一次性加载大量数据不仅会消耗过多资源,还可能导致用户体验下降。因此,合理地进行分页处理显得...

    用ORACLE的SQL语句实现多栏分页输出

    用ORACLE的SQL语句实现多栏分页输出.RTF

    mysql、sqlserver、oracle分页,java分页统一接口实现

    MySQL、SQL Server、Oracle 分页及 Java 分页统一接口实现 MySQL、SQL Server、Oracle 分页是关系数据库管理系统中最基本也是最常用的操作之一,而 Java 分页统一接口实现则是对数据库操作的抽象和封装。本文将对 ...

    oracle 分页完整代码

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们需要将结果集分块加载,这就是所谓的分页。在这个Java和Oracle结合的分页实现中,我们将探讨如何通过Java后端配合...

    Oracle&JSP分页和Oracle分页

    总结来说,Oracle和JSP结合实现分页涉及以下几个步骤:在Oracle中构造分页查询,使用JDBC在Servlet中执行查询,然后在JSP页面中展示数据。理解并熟练掌握这些步骤对于开发高效、用户友好的数据驱动网站至关重要。在...

    Oracle 分页的存储过程

    总结来说,Oracle分页存储过程是通过动态构造SQL语句,结合输入的分页参数,计算出总页数,并返回指定页的数据。这种方式在处理大量数据时提高了效率,同时也提供了灵活的查询控制。通过包装这些逻辑在存储过程中,...

    Oracle Sql语句转换成Mysql Sql语句

    2. **分页查询**:Oracle使用ROWNUM进行分页,而MySQL通常使用LIMIT和OFFSET。在转换过程中,需要将Oracle的ROWNUM替换为MySQL的LIMIT子句。 3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在...

Global site tag (gtag.js) - Google Analytics