失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MySQL数据库——MySQL LIMIT:限制查询结果的条数

MySQL数据库——MySQL LIMIT:限制查询结果的条数

时间:2019-08-25 22:31:25

相关推荐

MySQL数据库——MySQL LIMIT:限制查询结果的条数

当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用LIMIT关键字来限制查询结果返回的条数。

LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。

LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。

指定初始位置

LIMIT 关键字可以指定查询结果从哪条记录开始显示,显示多少条记录。

LIMIT 指定初始位置的基本语法格式如下:

LIMIT 初始位置,记录数

其中,“初始位置”表示从哪条记录开始显示;“记录数”表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。

注意:LIMIT 后的两个参数必须都是正整数。

例 1

在 tb_students_info 表中,使用 LIMIT 子句返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下:

mysql> SELECT * FROM tb_students_info LIMIT 3,5;+----+-------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+-------+---------+------+------+--------+------------+| 4 | Jane | 1 | 22 | F | 162 | -12-20 || 5 | Jim | 1 | 24 | M | 175 | -01-15 || 6 | John | 2 | 21 | M | 172 | -11-11 || 7 | Lily | 6 | 22 | F | 165 | -02-26 || 8 | Susan | 4 | 23 | F | 170 | -10-01 |+----+-------+---------+------+------+--------+------------+5 rows in set (0.00 sec)

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。LIMIT 关键字后的第一个数字“3”表示从第 4 行开始(记录的位置从 0 开始,第 4 行的位置为 3),第二个数字 5 表示返回的行数。

不指定初始位置

LIMIT 关键字不指定初始位置时,记录从第一条记录开始显示。显示记录的条数由 LIMIT 关键字指定。

LIMIT 不指定初始位置的基本语法格式如下:

LIMIT 记录数

其中,“记录数”表示显示记录的条数。如果“记录数”的值小于查询结果的总数,则会从第一条记录开始,显示指定条数的记录。如果“记录数”的值大于查询结果的总数,则会直接显示查询出来的所有记录。

例 2

显示 tb_students_info 表查询结果的前 4 行,SQL 语句和运行结果如下:

mysql> SELECT * FROM tb_students_info LIMIT 4;+----+-------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+-------+---------+------+------+--------+------------+| 1 | Dany | 1 | 25 | F | 160 | -09-10 || 2 | Green | 3 | 23 | F | 158 | -10-22 || 3 | Henry | 2 | 23 | M | 185 | -05-31 || 4 | Jane | 1 | 22 | F | 162 | -12-20 |+----+-------+---------+------+------+--------+------------+4 rows in set (0.00 sec)

结果中只显示了 4 条记录,说明“LIMIT 4”限制了显示条数为 4。

例 3

显示 tb_students_info 表查询结果的前 15 行,SQL 语句和运行结果如下:

mysql> SELECT * FROM tb_students_info LIMIT 15;+----+--------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+--------+---------+------+------+--------+------------+| 1 | Dany | 1 | 25 | F | 160 | -09-10 || 2 | Green | 3 | 23 | F | 158 | -10-22 || 3 | Henry | 2 | 23 | M | 185 | -05-31 || 4 | Jane | 1 | 22 | F | 162 | -12-20 || 5 | Jim | 1 | 24 | M | 175 | -01-15 || 6 | John | 2 | 21 | M | 172 | -11-11 || 7 | Lily | 6 | 22 | F | 165 | -02-26 || 8 | Susan | 4 | 23 | F | 170 | -10-01 || 9 | Thomas | 3 | 22 | M | 178 | -06-07 || 10 | Tom | 4 | 23 | M | 165 | -08-05 |+----+--------+---------+------+------+--------+------------+10 rows in set (0.26 sec)

结果中只显示了 10 条记录。虽然 LIMIT 关键字指定了显示 15 条记录,但是查询结果中只有 10 条记录。因此,数据库系统就将这 10 条记录全部显示出来。

带一个参数的 LIMIT 指定从查询结果的首行开始,唯一的参数表示返回的行数,即“LIMIT n”与“LIMIT 0,n”返回结果相同。带两个参数的 LIMIT 可返回从任何位置开始指定行数的数据。

LIMIT和OFFSET组合使用

LIMIT 可以和 OFFSET 组合使用,语法格式如下:

LIMIT 记录数 OFFSET 初始位置

参数和 LIMIT 语法中参数含义相同,“初始位置”指定从哪条记录开始显示;“记录数”表示显示记录的条数。

例 4

在 tb_students_info 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info LIMIT 5 OFFSET 3;+----+-------+---------+------+------+--------+------------+| id | name | dept_id | age | sex | height | login_date |+----+-------+---------+------+------+--------+------------+| 4 | Jane | 1 | 22 | F | 162 | -12-20 || 5 | Jim | 1 | 24 | M | 175 | -01-15 || 6 | John | 2 | 21 | M | 172 | -11-11 || 7 | Lily | 6 | 22 | F | 165 | -02-26 || 8 | Susan | 4 | 23 | F | 170 | -10-01 |+----+-------+---------+------+------+--------+------------+5 rows in set (0.00 sec)

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。即“LIMIT 5 OFFSET 3”意思是获取从第 4 条记录开始的后面的 5 条记录,和“LIMIT 3,5”返回的结果相同。

黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括

如果觉得《MySQL数据库——MySQL LIMIT:限制查询结果的条数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。