PostgreSQL 教程: LIMIT: 获取查询生成的行的子集

九月 5, 2023

摘要:在本教程中,您将学习如何使用 PostgreSQL 的 LIMIT 子句来获取查询生成的行的子集。

PostgreSQL LIMIT 子句简介

PostgreSQL 的LIMITSELECT语句的可选子句,用于限制查询返回的行数。

下面说明了LIMIT子句的语法:

SELECT select_list 
FROM table_name
ORDER BY sort_expression
LIMIT row_count

该语句返回查询生成的row_count行。如果row_count为零,则查询返回空集。如果row_countNULL,查询将返回与没有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表进行演示。

Film table

1) 使用 LIMIT 限制返回行数的示例

此示例使用LIMIT子句来获取按film_id排序的前五部电影:

SELECT
	film_id,
	title,
	release_year
FROM
	film
ORDER BY
	film_id
LIMIT 5;

PostgreSQL LIMIT - Select First n Rows

2) 使用 LIMIT 和 OFFSET 的示例

要检索按film_id排序的从第四部开始的 4 部电影,请同时使用LIMITOFFSET子句,如下所示:

SELECT
	film_id,
	title,
	release_year
FROM
	film
ORDER BY
	film_id
LIMIT 4 OFFSET 3;

PostgreSQL LIMIT - OFFSET example

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 - Select Top Rows

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