Skip to main content

SQLite LIMIT-限制返回的行数

SQLite限制条款简介

LIMIT子句是SELECT语句的可选部分。您可以使用LIMIT子句来约束查询返回的行数。

例如,SELECT语句可能返回一百万行。但是,如果只需要结果集中的前10行,可以向SELECT语句中添加LIMIT子句来检索10行。

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

SELECT
column_list
FROM
table
LIMIT row_count;

row_count是一个正整数,指定返回的行数。

例如,要获取tracks表中的前10行,可以使用以下语句:

SELECT
trackId,
name
FROM
tracks
LIMIT 10;

试试看

SQLite LIMIT 10 tracks

如果要从结果集的第10行开始获取前10行,请使用OFFSET关键字,如下所示:

SELECT
column_list
FROM
table
LIMIT row_count OFFSET offset;

或者,您可以使用以下LIMIT OFFSET子句的简写语法:

SELECT
column_list
FROM
table
LIMIT offset, row_count;

例如,要从tracks表的第11行开始获得10行,可以使用以下语句:

SELECT
trackId,
name
FROM
tracks
LIMIT 10 OFFSET 10;

试试看

SQLite LIMIT 10 OFFSET 10 example

在web应用程序中,经常可以使用偏移量对结果集进行分页。

SQLite限制和ORDER BY子句

你应该总是在ORDER BY子句中使用LIMIT子句。因为您希望以指定的顺序获得多行,而不是以未指定的顺序。

在SELECT语句中,ORDER BY子句出现在LIMIT子句之前。SQLite在获得LIMIT子句中指定的行数之前对结果集进行排序。

SELECT
column_list
FROM
table
ORDER BY column_1
LIMIT row_count;

例如,要获得按大小排列的前十大曲目,可以使用以下查询:

SELECT
trackid,
name,
bytes
FROM
tracks
ORDER BY
bytes DESC
LIMIT 10;

试试看

SQLite LIMIT Top 10 Largest Tracks

要获得5条最短的轨迹,可以使用ORDER by子句按毫秒列指定的长度对轨迹进行排序,并使用LIMIT子句获得前5行。

SELECT
trackid,
name,
milliseconds
FROM
tracks
ORDER BY
milliseconds ASC
LIMIT 5;

试试看

SQLite LIMIT 5 shortest tracks

获取第n个最高值和最低值

可以使用ORDER BY和LIMIT子句获取第n个最高或最低值行。例如,你可能想知道第二长的轨道,第三小的轨道,等等。

为此,请使用以下步骤:

下面的语句返回tracks表中第二长的轨迹。

SELECT
trackid,
name,
milliseconds
FROM
tracks
ORDER BY
milliseconds DESC
LIMIT 1 OFFSET 1;

试试看

SQLite LIMIT second longest track

下面的语句获取tracks表中第三小的轨迹。

SELECT
trackid,
name,
bytes
FROM
tracks
ORDER BY
bytes
LIMIT 1 OFFSET 2;

试试看

SQLite LIMIT third smallest track

在本教程中,您学习了如何使用SQLite LIMIT子句来约束查询返回的行数。