在Postgres中分页的五种方法,从基本到异国情调
在PostgreSQL中,分页查询通常使用LIMIT
和OFFSET
子句。以下是五种不同的分页方法,从最基本的方法到更高级的技巧。
- 基本分页:
SELECT * FROM 表名称 LIMIT 每页行数 OFFSET 偏移量;
- 使用
ROW_NUMBER()
进行更灵活的分页:
WITH Ordered AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY 排序依据) as RowNum
FROM 表名称
)
SELECT * FROM Ordered WHERE RowNum BETWEEN 起始行数 AND 结束行数;
- 使用
CTE
(公共表表达式)进行分页:
WITH Paged AS (
SELECT *, 行数 FROM 表名称
LIMIT 每页行数 OFFSET 偏移量
)
SELECT * FROM Paged;
- 使用
generate_series
函数进行分页:
SELECT * FROM 表名称, generate_series(起始行数, 结束行数) AS s(RowNum)
WHERE RowNum <= (SELECT COUNT(*) FROM 表名称)
LIMIT 每页行数;
- 使用
LIMIT
和OFFSET
与COUNT
结合进行分页(适用于大数据集):
SELECT * FROM (
SELECT * FROM 表名称 LIMIT (页码-1) * 每页行数 OFFSET 偏移量
) AS Subset LIMIT 每页行数;
在实际应用中,可以根据具体需求选择最合适的分页方法。
评论已关闭