MySQL与Oracle的分页

MySQL与Oracle的分页

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

MySQL

语法

sql 复制代码
SELECT * FROM table_name LIMIT [offset,] row_count;

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

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

实例

sql 复制代码
-- 写法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 则就直接过滤掉了。

实例
sql 复制代码
-- 返回从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 行。两个关键字同义。

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

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

实例
sql 复制代码
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行
相关推荐
AIGC大时代5 小时前
OpenAI Agents SDK 工程笔记:tool 调用循环、max_turns 与生产禁区
服务器·数据库·笔记·tool·max_turns·functiontool·生产禁区
zcmodeltech5 小时前
能源电力沙盘模型控制系统设计——基于STM32与Modbus RTU的“发—输—变—配—用”全链条动态展示方案
数据库·stm32·单片机·嵌入式硬件·能源
Aaron - Wistron5 小时前
Windows Server 配置
oracle
李兆龙的博客5 小时前
从一到无穷大 #91:从 Habitat 看存储平台的整合与分工
数据库·人工智能·架构
惜分飞6 小时前
记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复---惜分飞
数据库·oracle
cspttty6 小时前
2026秋招供应链分析师技能栈:SQL、Excel、BI与业务分析
数据库·sql·excel
Omics Pro6 小时前
澳科大:自进化AI虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
ShineWinsu6 小时前
对于MySQL:索引的解析
linux·数据库·mysql·面试·笔试·索引·海量数据
我是苏苏6 小时前
Redis开发09:Windows系统下主从复制的配置教程
数据库·redis·缓存
隔窗听雨眠6 小时前
Oracle TDE透明数据加密完全指南:从密钥库配置到生产运维的系统性实践
oracle·数据加密·tde