首页 > 数据库 >Oracle 三种分页方法

Oracle 三种分页方法

时间:2023-06-17 14:06:33浏览次数:49  
标签:分页 OVER NUMBER 三种 Oracle ROWNUM my SELECT

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;

使用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()进行分页查询的优点是灵活性高,可以实现各种不同的分页方式,缺点是语法较为复杂。

 

作者:兴想事成



标签:分页,OVER,NUMBER,三种,Oracle,ROWNUM,my,SELECT
From: https://blog.51cto.com/u_15474809/6504767

相关文章

  • oracle中rownum和row_number()
     oracle中rownum和row_number() row_number()over(partitionbycol1orderbycol2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进......
  • oracle与MySQL数据库之间数据同步的技术要点
    1,需求描述某ORCALE11生产数据库(下称源数据库),内含近万个表,需要从中每日同步几十个表的数据到mySQL5.7数据库(下称目标数据库)中,供第三方使用。需要对生产数据库影响越小越好。2,技术挑战数据类型不完全一致。从Oracle中导出的建表语句到MySQL数据库中不一定能运行,因为二者的数据......
  • 编程语言的三种范式
     001、面向过程,如c、shell;性能高,代码可读性差。002、面向对象:c++、java;003、函数式编程。 面向过程编程:以过程为中心,按照一定的顺序执行程序。强调程序的执行顺序和控制流程。程序的重点在于算法和数据的处理,使用全局变量和函数进行操作。编写简单,可......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊
    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle、MySQL、PostgreSQL等数据库的安装配置、故障处理、性能优化等日常实践操作,以及常用脚本、注意事项等总结记录,分享给大家:Oracle优质技术文章概念梳理&安装配置Oracle的rwp之旅Oracle之HashJoinOr......
  • mysql分页查询
    创建测试表t1_part,id为自增主键,然后插入5900W条测试数据CREATETABLEt1_part(idintNOTNULLAUTO_INCREMENT,avarchar(30)DEFAULTNULL,bvarchar(30)DEFAULTNULL,cvarchar(30)DEFAULTNULL,dtimestampNULLDEFAULTNULL,PRIMARYKEY(id))PARTITIONBYRA......
  • Win10安装Oracle-21C
    1、前期工作下载安装包:OracleXE213_Win64.zip解压安装包2、开始安装注意:以管理员身份运行++++++++++++++++++++++分割线++++++++++++++++++++++此处点击“运行”++++++++++++++++++++++分割线++++++++++++++++++++++++++++++++++++++++++++分割线+++++++++++......
  • Oracle反连接和外连接中NESTED LOOPS无法更改驱动表
     Oracle反连接和外连接中NESTEDLOOPS无法更改驱动表 先说反连接,现有SQL如下:selectt.*fromtwheret.colnotin(select/*+nl_aj*/tt.colfromttwherett.colisnotnull)andt.colisnotnull;Planhashvalue:1434981293------------------------------......
  • oracle统计出正整数对应二进制的里面1的位数
    declarennumber:=15; count1int:=0;begin whilen<>0 loop n:=bitand(n,n-1); count1:=count1+1; endloop; dbms_output.put_line(count1); end;结果为:   对于负数oracle似乎处理不了,正整数没问题。......
  • oracle 12c cursor mutex X/S
    一、问题描述接到业务反馈,一套4节点12.2.0.1版本rac第三节点无法连接,长时间连接不上后提示超时。经检查数据库处于open状态,监听正常。二、处理2.1数据库检查检查等待事件,存在大量cursor:mutexX、cursor:mutexS。查看这些等待事件对应sql语句为selectSYS_CONTEXT('USEREN......
  • Oracle最高可用性架构(MAA)|黄金级(GOLD)
    1、什么是MAA参考之前的文章:1、Oracle最高可用性架构(MAA)|青铜级(BRONZE)https://www.cnblogs.com/mingfan/p/16804556.html2、Oracle最高可用性架构(MAA)|白银级(SILVER) https://www.cnblogs.com/mingfan/p/17464913.html2、黄金级(GOLD)MAA我们都知道,单点是系统高可用的......