九月 5, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的 LIMIT 子句来获取查询生成的行的子集。
目录
PostgreSQL LIMIT 子句简介
PostgreSQL 的LIMIT是 SELECT 语句的可选子句,用于限制查询返回的行数。
下面说明了LIMIT子句的语法:
SELECT select_list
FROM table_name
ORDER BY sort_expression
LIMIT row_count
该语句返回查询生成的row_count行。如果row_count为零,则查询返回空集。如果row_count是NULL,查询将返回与没有LIMIT子句相同的结果集。
如果您想在返回row_count行之前跳过一些行,请在LIMIT子句之后放置OFFSET子句,如下所示:
SELECT select_list
FROM table_name
LIMIT row_count OFFSET row_to_skip;
该语句首先跳过row_to_skip行,然后返回查询生成的row_count行。如果row_to_skip为零,则该语句将像没有OFFSET子句一样工作。
由于表可能以未指定的顺序存储行,因此当您使用LIMIT子句时,应始终使用 ORDER BY 子句来控制行顺序。如果不使用ORDER BY子句,则可能会得到具有未指定行顺序的结果集。
PostgreSQL LIMIT 示例
让我们看一些使用 PostgreSQL 的LIMIT子句的示例。我们将使用示例数据库中的film表进行演示。

1) 使用 LIMIT 限制返回行数的示例
此示例使用LIMIT子句来获取按film_id排序的前五部电影:
SELECT
film_id,
title,
release_year
FROM
film
ORDER BY
film_id
LIMIT 5;

2) 使用 LIMIT 和 OFFSET 的示例
要检索按film_id排序的从第四部开始的 4 部电影,请同时使用LIMIT和OFFSET子句,如下所示:
SELECT
film_id,
title,
release_year
FROM
film
ORDER BY
film_id
LIMIT 4 OFFSET 3;

3) 使用 LIMIT OFFSSET 获取头部/底部 N 行
通常,您经常使用LIMIT子句从表中选择具有最高或最低值的行。
例如,要获取租赁费用最高的 10 部电影,您可以按租赁费率降序对电影进行排序,并使用LIMIT子句获取前 10 部电影。以下查询说明了这个想法:
SELECT
film_id,
title,
rental_rate
FROM
film
ORDER BY
rental_rate DESC
LIMIT 10;
查询结果如下:

在本教程中,您学习了如何使用 PostgreSQL 的LIMIT和OFFSET子句来检索查询返回的行的子集。