限制和抵消关系

考虑以下 users 表:

ID 用户名
1 用户 1
2 用户 2
3 用户 3
4 用户 4
用户 5

为了约束 SELECT 查询的结果集中的行数,LIMIT 子句可以与一个或两个正整数一起用作参数(包括零)。

LIMIT 子句有一个参数

使用一个参数时,结果集将仅限制为以下列方式指定的数字:

SELECT * FROM users ORDER BY id ASC LIMIT 2
ID 用户名
1 用户 1
2 用户 2

如果参数的值为 0,则结果集将为空。

另请注意,ORDER BY 子句可能很重要,以指定将呈现的结果集的第一行(当由另一列排序时)。

LIMITclause 有两个参数

当在 LIMIT 子句中使用两个参数时:

  • 一个参数表示将从中显示结果集行的行 - 此数字通常被称为偏移量,因为它表示受约束结果集的初始行之前的行。这允许参数接收 0 作为值,从而考虑非约束结果集的第一行。
  • 第二参数指定在结果集中(类似于一个参数的例子)将被返回的最大行数。

因此查询:

SELECT * FROM users ORDER BY id ASC LIMIT 2, 3

提供以下结果集:

ID 用户名
3 用户 3
4 用户 4
用户 5

请注意,当 offset 参数为 0 时,结果集将等同于一个参数 LIMIT 子句。这意味着以下 2 个查询:

SELECT * FROM users ORDER BY id ASC LIMIT 0, 2

SELECT * FROM users ORDER BY id ASC LIMIT 2

生成相同的结果集:

ID 用户名
1 用户 1
2 用户 2

OFFSET 关键字:替代语法

具有两个参数的 LIMIT 子句的替代语法包括在第一个参数之后使用 OFFSET 关键字,方式如下:

SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3

此查询将返回以下结果集:

ID 用户名
3 用户 3
4 用户 4

请注意,在此替代语法中,参数的位置已切换:

  • 一个参数表示结果集中要返回的行数;

  • 第二参数表示偏移。