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)
输出结果:返回表中前两条记录 jim、lisa。
分页:跳过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。
Previous: WHERE 条件查询