Oracle实现分页三种不同的方式

 更新时间:2023年08月02日 11:08:24   作者:logqq  
这篇文章主要给大家介绍了关于Oracle实现分页三种不同的方式,oracle分页与MySQL不同,MySQL是用关键字limit进行分页,oracle是根据行号,需要的朋友可以参考下

前言

Oracle的三层分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER() OVER()

1.使用ROWNUM

ROWNUM是Oracle中一个伪列,它用于表示返回的行的序号。使用ROWNUM进行分页查询的方法是在SELECT语句中加入WHERE子句,并在WHERE子句中指定ROWNUM的取值范围,例如:

SELECT *
FROM (
  SELECT a.*, ROWNUM r
  FROM my_table a
  WHERE ROWNUM <= 30
)
WHERE r >= 20;

上述查询语句的意思是查询my_table表中的前30条记录,然后在这30条记录中取出第20到第30条记录作为结果返回。使用ROWNUM进行分页查询的优点是简单易懂,缺点是在查询大量数据时性能较差。

2.使用OFFSET和FETCH

OFFSET和FETCH是Oracle 12c引入的语法,它们可以更方便地实现分页查询。使用OFFSET和FETCH进行分页查询的方法是在SELECT语句中加入OFFSET和FETCH子句,例如:

SELECT *
FROM my_table
ORDER BY my_column
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

上述查询语句的意思是对my_table表按照my_column列进行排序,然后取出从第21条记录开始的10条记录作为结果返回。使用OFFSET和FETCH进行分页查询的优点是简单方便,缺点是只有在Oracle 12c及以上版本中才能使用。

3.使用ROW_NUMBER() OVER()

ROW_NUMBER() OVER()是Oracle中一种用于计算行号的函数。使用ROW_NUMBER() OVER()进行分页查询的方法是在SELECT语句中加入ROW_NUMBER() OVER()函数,并在WHERE子句中指定ROW_NUMBER() OVER()的取值范围,例如:

SELECT *
FROM (
  SELECT a.*, ROW_NUMBER() OVER (ORDER BY my_column) r
  FROM my_table a
)
WHERE r BETWEEN 21 AND 30;

上述查询语句的意思是对my_table表按照my_column列进行排序,然后取出第21到第30条记录作为结果返回。使用ROW_NUMBER() OVER()进行分页查询的优点是灵活性高,可以实现各种不同的分页方式,缺点是语法较为复杂。

总结

到此这篇关于Oracle实现分页三种不同的方式的文章就介绍到这了,更多相关Oracle分页方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle数据库密码到期怎么解决

    oracle数据库密码到期怎么解决

    这篇文章主要介绍了oracle数据库密码到期的解决方法,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-02-02
  • 处理Oracle 监听文件listener.log问题

    处理Oracle 监听文件listener.log问题

    这篇文章主要介绍了处理Oracle 监听文件listener.log问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 在window操作系统上安装Oracle10g图文教程

    在window操作系统上安装Oracle10g图文教程

    Oracle10g是Oracle公司出的一个比较轻量版的数据库,在window系统上安装比较方便,这篇文章主要介绍了在window操作系统上安装Oracle10g图文教程,需要的朋友可以参考下
    2017-02-02
  • oracle扩展表空间方法示例

    oracle扩展表空间方法示例

    这篇文章主要给大家介绍了关于oracle扩展表空间的相关资料,生产环境遇到数据量暴增或累计数据达到某种程度后,表空间和索引空间的使用量就需要扩容,需要的朋友可以参考下
    2023-07-07
  • Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解

    Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解

    这篇文章主要介绍了Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解,对查询语法一并做了介绍,需要的朋友可以参考下
    2014-07-07
  • 巧妙解决Oracle NClob读写问题(经验分享)

    巧妙解决Oracle NClob读写问题(经验分享)

    下面小编就为大家带来一篇巧妙解决Oracle NClob读写问题(经验分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Oracle出现ora-12154无法解析指定连接标识符的解决方法

    Oracle出现ora-12154无法解析指定连接标识符的解决方法

    这篇文章主要为大家详细介绍了Oracle出现ora-12154无法解析指定连接标识符的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 在oracle 数据库查询的select 查询字段中关联其他表的方法

    在oracle 数据库查询的select 查询字段中关联其他表的方法

    在实际开发过程中,特别是在做数据查询的时候,能够根据动态生成的sql语句将查询的结果转化并返回到业务处理逻辑(或页面展示出来)能大大的减轻业务逻辑的处理复杂度。
    2009-08-08
  • oracle临时表WITH AS用法详解

    oracle临时表WITH AS用法详解

    文章介绍了Oracle数据库中的临时表,包括会话级临时表和事务级临时表的区别,以及它们的创建和使用方法,会话级临时表数据仅在当前会话存在,而事务级临时表数据仅在当前事务有效,文中还提供了创建和插入数据的示例,并简要介绍了实际应用中的案例
    2024-11-11
  • Oracle数学相关函数小结

    Oracle数学相关函数小结

    这篇文章主要介绍了Oracle数学相关函数,实例总结了Oracle常用的数学相关函数并给出了相应用法示例,需要的朋友可以参考下
    2016-03-03

最新评论