上一篇
分页查询中的SQL语句,如何优化和选择最合适的分页方法?
- 云服务器
- 2026-01-16
- 6
分页的SQL语句是数据库操作中常用的一种技术,主要用于从大量数据中提取特定页面的数据,以下是一些常见的分页SQL语句及其使用方法。
使用LIMIT和OFFSET
这是最常用的分页方法之一,通过指定LIMIT和OFFSET来实现分页。

| 语句 | 说明 |
|---|---|
| SELECT * FROM table_name LIMIT 10 OFFSET 20; | 从第21条记录开始,提取10条记录,即第3页的数据。 |
LIMIT表示每页显示的记录数,OFFSET表示跳过的记录数。
使用ROW_NUMBER()
ROW_NUMBER()函数可以给查询结果中的每一行分配一个唯一的序号,然后根据这个序号进行分页。
| 语句 | 说明 |
|---|---|
| SELECT FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, FROM table_name) AS t WHERE t.rownum BETWEEN 21 AND 30; | 从第21条记录开始,提取10条记录,即第3页的数据。 |
使用ROW_NUMBER()和FETCH NEXT
这种方法结合了ROW_NUMBER()和FETCH NEXT来实现分页。

| 语句 | 说明 |
|---|---|
| WITH Numbered AS (SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, FROM table_name) SELECT FROM Numbered WHERE rownum BETWEEN 21 AND 30; | 从第21条记录开始,提取10条记录,即第3页的数据。 |
使用FETCH FIRST和OFFSET
这种方法结合了FETCH FIRST和OFFSET来实现分页。
| 语句 | 说明 |
|---|---|
| SELECT * FROM table_name ORDER BY id FETCH FIRST 10 ROWS ONLY OFFSET 20 ROWS; | 从第21条记录开始,提取10条记录,即第3页的数据。 |
FAQs
Q1:如何实现从第1页开始分页?

A1:可以通过设置OFFSET为0来实现,SELECT * FROM table_name LIMIT 10 OFFSET 0; 将返回第1页的数据。
Q2:如何实现每页显示不同数量的记录?
A2:可以通过修改LIMIT的值来实现,SELECT * FROM table_name LIMIT 15 OFFSET 0; 将返回第1页的15条记录。
国内文献权威来源
- 《数据库系统原理与应用》(清华大学出版社)
- 《SQL Server数据库应用技术》(电子工业出版社)
- 《MySQL数据库应用教程》(人民邮电出版社)