MySQL 限制和偏移示例
LIMIT 关键字是什么?
limit 关键字用于限制查询结果中返回的行数。
它可以与 SELECT、UPDATE 或 DELETE 命令 LIMIT 关键字语法结合使用
LIMIT 关键字的语法如下
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
点击这里
- “SELECT {字段名称| *} FROM 表名称” 是 选择语句 包含我们希望在查询中返回的字段。
- “[WHERE 条件]” 是可选的,但如果提供,则可用于指定结果集的过滤器。
- “限制 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 |
请注意,由于 LIMIT 子句中的 N 大于表中的总记录数,因此我们的查询仅返回了 9 名成员。
将上面的脚本重写如下
SELECT * FROM members LIMIT 9;
我们的查询结果集中仅返回 9 行。
在 LIMIT 查询中使用 OFF SET
- 抵消 值也最常与 LIMIT 关键字一起使用。OFF SET 值允许我们指定从哪一行开始检索数据
假设我们想要从行中间开始获取有限数量的成员,我们可以使用 LIMIT 关键字和偏移值来实现这一点。下面显示的脚本从第二行开始获取数据并将结果限制为 2。
SELECT * FROM `members` LIMIT 1, 2;
在以下位置执行上述脚本 MySQL 针对 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) 指定为限制时,结果集中不会返回任何行。
- OFF SET 值允许我们指定从哪一行开始检索数据
- 它可以与 SELECT、UPDATE 或 DELETE 命令 LIMIT 关键字语法结合使用