当前位置: 首页 > news >正文

MySQL与Oracle的分页

MySQL与Oracle的分页

当我们通过SQL去查询一个结果集的时候,并不需要查看所有行,可能只是查看前几行,或者中间的几行。则需要像MySQLlimitOracleROWNUMFETCH NEXT来实现。

MySQL

语法

SELECT * FROM table_name LIMIT [offset,] row_count;

LIMIT 是MySQL中用于限制返回结果行数的关键字。

  • table_name 是你要查询的表名。
  • row_count 是你要返回的行数。
  • offset 是可选的,表示从查询结果的第几行开始返回,通常用于分页查询。

实例

-- 写法1 不携带OFFSET
SELECT * FROM TEST LIMIT 10; -- 返回前10行-- 写法2 携带OFFSET 但携带OFFSET关键字
SELECT * FROM TEST LIMIT 10,5; -- 跳过前10行后,再返回5行-- 写法3 携带OFFSET 并携带OFFSET关键字
SELECT * FROM TEST LIMIT 10 OFFSET 5; -- 跳过前5行后,再返回10行

不同的写法对应参数的顺序是不一致的这个需要注意。

Oracle

ROWNUM

语法

首先我们要这个ROWNUM是这个什么?

在 Oracle 数据库中,ROWNUM 是一个伪列(虚拟列),用于标识返回结果集中的行号。

ROWNUM 是在查询结果返回后才赋值的,它的值是按照查询结果的顺序逐行递增的。

通常来说,使用ROWNUM我们尽量还是需要子查询来配合使用,因为如果当使用ORDER BY去进行排序的话,ROWNUM是会根据排序后的结果集重新生成的,这个时候这个行号就不是原来的行号了。另外当我们直接使用WHERE ROWNUM > 1他会导致结果集未空的情况,**因为ROWNUM 是在查询结果返回后才赋值的。**所以直接使用WHERE 则就直接过滤掉了。

实例

-- 返回从10行后的所有数据
SELECT * FROM (SELECT ROWNUM ROW_NUM FROM Test 
)  where ROW_NUM > 10-- 返回从11行-20的数据
SELECT * FROM (SELECT ROWNUM ROW_NUM FROM Test 
)  where ROW_NUM > 10 AND ROW_NUM <= 20

FETCH NEXT(Oracle 12c及以上版本可用)

FETCH NEXTFETCH FIRST 都是返回查询结果中的前 n 行。两个关键字同义。

语法

SELECT * FROM table_name
OFFSET n ROWS
FETCH NEXT m ROWS ONLY;
  • OFFSET n ROWS:跳过前 n 行,即从第 n+1 行开始返回结果。

  • FETCH NEXT m ROWS ONLY:返回接下来的 m 行。

实例

SELECT ROWNUM FROM Test FETCH NEXT 10 ROWS ONLY; -- 返回前10行# 这里是MySQL没法通过只使用OFfSET使用的,但是可以 limti 10,100000000 来实现😂 虽然不优雅但可以实现
SELECT ROWNUM FROM Test OFFSET 10 ROWS;   -- 跳过10行,返回之后的所有行SELECT ROWNUM FROM Test OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY;  -- 跳过前5行后,再返回10行
http://www.lryc.cn/news/167940.html

相关文章:

  • git基本手册
  • 每日一题(两数相加)
  • 恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬
  • 【计算机网络】Tcp详解
  • 最简单的laravel不使用任何扩展导出csv
  • Android studio 断点调试、日志断点
  • 服务器数据恢复-热备盘同步过程中硬盘离线的RAID5数据恢复案例
  • Python 使用input获取用户输入
  • Python 可迭代对象、迭代器、生成器
  • HTML的有序列表、无序列表、自定义列表
  • 银河麒麟安装Docker-国产化-九五小庞
  • 数据库与身份认证
  • LabVIEW开发锅炉汽包水位的监督控制和模拟
  • 2023-简单点-树莓派安装ncnn框架
  • Docker核心原理与实操
  • 虚幻引擎 UE5 增强输入系统
  • Mac 安装软件各种报错解决方案
  • leetcode做题笔记142. 环形链表 II
  • DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?
  • Mybatis常见面试题总结
  • 数字IC设计之时序分析基础概念汇总
  • 1.centos7安装docker
  • 基于elasticsearch-8.8.2 kibana-8.8.2 搭建一个文搜图系统demo
  • 第26节-PhotoShop基础课程-形状工具组-画板
  • 第一次课,通过进程信息和服务信息识别当前计算机运行程序(预习版)
  • ChatGPT 或其它 AI,能用在文书创作上吗?
  • Java中锁的分类
  • centos安装flink,通过windows访问webui
  • 如何让两台手机相互远程控制?
  • 预编译为什么能防止SQL注入?一看你就明白了。预编译原理详解