九月 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
子句来检索查询返回的行的子集。