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

Oracle 三种分页方法的更多相关文章

  1. Sql三种分页方法

    --分页三种方法--第一种 ROW_NUMBER() OVER( ORDER BY OrgID) AS indexs 大于pagesize*pageindex,少于等于pagesize*(pagein ...

  2. MVC三种分页方法

    View部分: @using WebApplication1.Models;分页方法1引包 @*@using PagedList.Mvc; @using WebApplication1.Models; ...

  3. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页 复制本页链接 opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方 ...

  4. SQL SERVER 2008 中三种分页方法与总结

    建立表: CREATE TABLE [TestTable] ( , ) NOT NULL , ) COLLATE Chinese_PRC_CI_AS NULL , ) COLLATE Chinese_ ...

  5. Oracle三种分页?

    ①select * from (select employee.*, rownum r from employee) where r between 2 and 5; ②select * from ( ...

  6. java oracle的2种分页方法

    java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --> <select id="findBlogs" resultType= ...

  7. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  8. sqlserver三种分页方式性能比较

    Liwu_Items表,CreateTime列建立聚集索引 第一种,sqlserver2005特有的分页语法 declare @page intdeclare @pagesize intset @pa ...

  9. DjangoRestFramework框架三种分页功能的实现 - 在DjangoStarter项目模板中封装

    前言 继续Django后端开发系列文章.刚好遇到一个分页的需求,就记录一下. Django作为一个"全家桶"型的框架,本身啥都有,分页组件也是有的,但默认的分页组件没有对API开发 ...

  10. javase-常用三种遍历方法

    javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...

随机推荐

  1. vue子组件给父组件传值

    子组件: <template> <div class="app"> <input @click="sendMsg" type=&q ...

  2. MySql类型转换函数cast

    这两天处理一个现网的MySQL慢查询工单,学到了一个好用的MySQL函数:cast.事情是这样的: 我们有两张表 t_user 和 t_rule 表,需要关联这两张表去查询,关联字段是 t_user ...

  3. CCL 2024 Task7 双任务冠军

    近期参加NLP领域CCL2024评测,现将赛题背景和实现方法分享,推理文本纠错领域的发展. 1.背景信息 随着教育的发展和网络的普及,作文评价的规模越来越大,人工评改作文的成本和效率成为一大难题.为了 ...

  4. golang 切片原理面试题

    package main import "fmt" func main() { var s = make([]int, 0, 10) _ = append(s, 1,2,3) fm ...

  5. WPF使用WPFMediaKit/AForge调用摄像头示例 .net core 8.0 也支持

    调用摄像头使我们经常会用到的一个功能,可以根据摄像头捕捉到的图像进行分析处理来做很多的东西,比如电子档案.图像识别.AI分析等等. 本示例中主要介绍Nuget最常用的两个调用摄像头的轮子 WPFMed ...

  6. 安装numpy:conda install nampy==1.16 时报错An HTTP error occurred when trying to retrieve this URL.

    安装numpy:conda install nampy==1.16 时报错An HTTP error occurred when trying to retrieve this URL. HTTP e ...

  7. 鸿蒙HarmonyOS实战-Web组件(Cookie及数据存储)

    前言 Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息.它由网站服务器发送到用户的浏览器,并存储在用户的计算机上.每当用户访问该网站时,浏览器将发送该Cookie回 ...

  8. 8.16考试总结(NOIP模拟41)[你相信引力吗·marshland·party?·半夜]

    美丽的不是这个世界,而是看世界的你的眼神. T1 你相信引力吗 解题思路 好像只有我一个人没有看出来这个题是单调栈(现在一看区间问题就是双指针,线段树) 维护一个单调递减的栈. 我们把最大值放到左端点 ...

  9. Atlas快速入门

    先说一些废话 之前的公司在数据中台的项目上调研决定启用了Atlas作为我们数据血缘管理的工具,让我给大家写了一份Atlas快速入门的文档,所以在这里我将这篇文档以一个纯新手视角的方式再一次优化,希望能 ...

  10. TypeScript keyof

    keyof 是 TypeScript 中的一个关键字,用于获取一个类型的所有键(属性名)构成的联合类型.它主要用于在类型系统中引用对象类型的键. 以下是一些 keyof 的用法和示例: 1. 获取对象 ...