MySQL 限制和偏移关系
示例
考虑下users表:
为了限制SELECT查询结果集中的行数,该LIMIT子句可以与一个或两个正整数一起用作参数(包括零)。
LIMIT有一个参数的子句
使用一个参数时,结果集将仅被约束为以以下方式指定的数字:
SELECT * FROM users ORDER BY id ASC LIMIT 2
如果参数的值为0,则结果集将为空。
还要注意,该ORDERBY子句可能很重要,以便指定将要显示的结果集的第一行(按另一列排序时)。
LIMIT有两个参数的子句
在LIMIT子句中使用两个参数时:
第一个参数表示将要从中显示结果集行的行–该数字通常被称为offset,因为它表示受约束结果集的初始行之前的行。这允许自变量0作为值接收,因此考虑了非约束结果集的第一行。
该第二参数指定在结果集中(所述一个参数的例子同样地)将被返回的行的最大数量。
因此查询:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
呈现以下结果集:
注意,当offset参数为时0,结果集将等效于一个参数LIMIT子句。这意味着以下两个查询:
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2 SELECT * FROM users ORDER BY id ASC LIMIT 2
产生相同的结果集:
OFFSET关键字:替代语法
LIMIT具有两个参数的子句的另一种语法包括以OFFSET下列方式在第一个参数之后使用关键字:
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
该查询将返回以下结果集:
注意,在这种替代语法中,参数的位置已切换:
第一个参数表示结果集中要返回的行数;
该第二参数表示偏移。