限制和抵消关系
考虑以下 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
子句可能很重要,以指定将呈现的结果集的第一行(当由另一列排序时)。
LIMIT
clause 有两个参数
当在 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 |
请注意,在此替代语法中,参数的位置已切换:
-
第一个参数表示结果集中要返回的行数;
-
该第二参数表示偏移。