PostgreSQL 提供了多种方式来限制查询结果的数量,最常用的是使用 LIMIT
子句。LIMIT
子句可以用来限制查询结果集的行数。
例如,如果你想从 employees
表中选择前10个员工,你可以这样写SQL查询:
SELECT * FROM employees LIMIT 10;
如果你还想指定从哪一个位置开始选择(即偏移量),你可以使用 OFFSET
子句。例如,如果你想跳过前20个员工,然后选择接下来的10个员工,你可以这样写:
SELECT * FROM employees LIMIT 10 OFFSET 20;
在这个例子中,LIMIT 10
表示最多选择10个员工,而 OFFSET 20
表示从第21个员工开始选择。
另外,如果你想限制返回的总成本,你可以使用 LIMIT
和 OFFSET
子句结合成本估算函数,例如 ROW_NUMBER()
。
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY employee_id) AS rn
FROM employees
) subquery
WHERE rn BETWEEN 21 AND 30;
在这个例子中,我们首先根据 employee_id
对 employees
表进行排序,并为每行分配一个序号。然后,我们选择序号在21到30之间的行,这样就实现了类似于 OFFSET 20 LIMIT 10
的效果,但是可以更灵活地控制成本估算。