在 SQL 中,分页查询的实现方式取决于你使用的数据库类型。下面按常见数据库分别说明。
LIMIT + OFFSETSELECT *
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;
SELECT *
FROM user
ORDER BY id
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY;
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn
FROM user
) t
WHERE rn BETWEEN 21 AND 30;
SELECT *
FROM user
ORDER BY id
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
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
OFFSET 越大越慢SELECT *
FROM user
WHERE id > 1000
ORDER BY id
LIMIT 10;
SELECT COUNT(*) FROM user;
如果你有:
可以告诉我,我可以给你更贴合的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。