温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL怎么实现分页查询

发布时间:2026-09-01 09:12:13 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

在 SQL 中,分页查询的实现方式取决于你使用的数据库类型。下面按常见数据库分别说明。


一、MySQL / PostgreSQL(推荐方式)

使用 LIMIT + OFFSET

SELECT *
FROM user
ORDER BY id
LIMIT 10 OFFSET 20;

含义:

  • LIMIT 10:每页 10 条
  • OFFSET 20:跳过前 20 条(第 3 页)

等价写法:

SELECT *
FROM user
ORDER BY id
LIMIT 20, 10;

二、SQL Server

SQL Server 2012+(推荐)

SELECT *
FROM user
ORDER BY id
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY;

老版本(ROW_NUMBER)

SELECT *
FROM (
  SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn
  FROM user
) t
WHERE rn BETWEEN 21 AND 30;

三、Oracle

Oracle 12c+

SELECT *
FROM user
ORDER BY id
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Oracle 11g 及以前

SELECT *
FROM (
  SELECT t.*, ROWNUM rn
  FROM (
    SELECT * FROM user ORDER BY id
  ) t
  WHERE ROWNUM <= 30
)
WHERE rn > 20;

四、通用分页公式(逻辑)

假设:

  • pageNum:第几页(从 1 开始)
  • pageSize:每页条数
OFFSET = (pageNum - 1) * pageSize
LIMIT  = pageSize

示例(第 3 页,每页 10 条):

LIMIT 10 OFFSET 20

五、分页注意事项(很重要)

  1. 一定要 ORDER BY
    • 否则分页结果不稳定
  2. 大表分页慢
    • OFFSET 越大越慢
    • 可用“游标分页”优化:
      SELECT *
      FROM user
      WHERE id > 1000
      ORDER BY id
      LIMIT 10;
      
  3. COUNT 总条数
    SELECT COUNT(*) FROM user;
    

如果你有:

  • 具体数据库(MySQL / Oracle / SQL Server)
  • 表结构
  • 是否用于后端接口(如 Java / MyBatis)

可以告诉我,我可以给你更贴合的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI