FETCH

Oracle 12c 及以上版本支持,用于限制查询返回行数,实现分页效果,对标 MySQL 的 LIMIT

完整语法

[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Code language: CSS (css)
1. OFFSET 子句(可选)

作用:跳过前面N行,用于分页。

  • 省略时偏移量=0,从第1行开始取数据
  • 偏移量为负数:按0处理
  • 偏移量为NULL 或大于总数据行数:不返回任何行
  • 偏移带小数:直接截断小数部分,只保留整数
2. FETCH 子句

作用:指定返回多少行,支持按行数、百分比两种方式。

  • ONLY:只取指定行数(最常用)
  • WITH TIES:把和最后一行排序字段值相同的数据一并返回,必须搭配ORDER BY

示例代码

直接取前5条,按name降序
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
取前2行
select * from student fetch next 2 rows only;Code language: JavaScript (javascript)

输出结果:返回表中前两条记录 jimlisa

分页:跳过3行,读取4行(第2页,每页4条)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
按百分比返回,取总数据的10%
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
WITH TIES 用法(带并列)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;

如果第3名有多人分数相同,会全部查出来,结果行数可能大于3。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注