MySQL LIMIT 和 OFFSET 示例
LIMIT 关键字是什么意思?
limit 关键字用于限制查询结果返回的行数。
它可以与 SELECT、UPDATE 或 DELETE 命令结合使用 LIMIT 关键字语法
LIMIT 关键字的语法如下
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
HERE
- “SELECT {字段名(s) | *} FROM 表名(s)” 是我们想在查询中返回的字段的 SELECT 语句。
- “[WHERE 条件]”是可选的,但如果提供,可用于指定结果集的筛选条件。
- “LIMIT N”是关键字,**N** 是从 0 开始的任何数字。将 0 作为限制不会返回查询中的任何记录。例如,数字 5 将返回五条记录。如果指定表中的记录数少于 N,则将返回查询表中所有记录的结果集。
让我们看一个例子 –
SELECT * FROM members LIMIT 2;
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
从上面的截图可以看出,只返回了两名成员。
仅从数据库获取十 (10) 名成员的列表
假设我们想从 Myflix 数据库获取前 10 名注册成员的列表。我们将使用以下脚本来实现。
SELECT * FROM members LIMIT 10;
执行上述脚本会得到如下结果
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
4 | Gloria Williams | Female | 14-02-1984 | NULL | 2nd Street 23 | NULL | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | NULL | Woodcrest | NULL | 845738767 | NULL | NULL |
6 | Sheldon Cooper | Male | NULL | NULL | Woodcrest | NULL | 976736763 | NULL | NULL |
7 | Rajesh Koothrappali | Male | NULL | NULL | Woodcrest | NULL | 938867763 | NULL | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | NULL | Woodcrest | NULL | 987636553 | NULL | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | NULL | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me | NULL |
请注意,我们的查询只返回了 9 名成员,因为 LIMIT 子句中的 N 大于表中总记录数。
将上述脚本重写如下
SELECT * FROM members LIMIT 9;
在我们的查询结果集中只返回 9 行。
在 LIMIT 查询中使用 OFFSET
**OFFSET** 值也最常与 LIMIT 关键字一起使用。OFFSET 值允许我们指定从哪一行开始检索数据
假设我们想从行的中间开始获取有限数量的成员,我们可以使用 LIMIT 关键字和 offset 值来实现。下面所示的脚本从第二行开始获取数据,并将结果限制为 2。
SELECT * FROM `members` LIMIT 1, 2;
在 MySQL workbench 中针对 myflixdb 执行上述脚本会得到以下结果。
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
Note that here OFFSET = 1 Hence row#2 is returned & Limit = 2, Hence only 2 records are returned
何时应使用 LIMIT 关键字?
假设我们正在开发一个基于 myflixdb 的应用程序。我们的系统设计者要求我们将每页显示的记录数限制为 20 条,以应对缓慢的加载时间。我们如何实现满足这些用户要求的系统?在这些情况下,LIMIT 关键字非常有用。我们可以将查询返回的结果限制为每页只返回 20 条记录。
摘要
- LIMIT 关键字用于限制从结果集中返回的行数。
- LIMIT 数字可以是零 (0) 及以上的任何数字。当指定零 (0) 作为限制时,结果集中不返回任何行。
- OFFSET 值允许我们指定从哪一行开始检索数据
- 它可以与 SELECT、UPDATE 或 DELETE 命令结合使用 LIMIT 关键字语法