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 email 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 email 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 email 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 关键字语法