MySQL LIMIT
用法与实例
在 MySQL 中,我们使用 LIMIT 子句来限定 SELECT 语句返回的行的数量。
MySQL LIMIT
语法
该 LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个非负数正数
作为参数。 LIMIT 子句的语法如下:
LIMIT [offset,] row_count;
或者
LIMIT row_count OFFSET offset;
说明:
- 上述两种语法的结果是等效的,只是写法略有不同。
- offset 指定要返回的第一行的偏移量。偏移量是相对于未使用 LIMIT 语句时的原始结果集而言的。offset 可理解为在原始结果集的基础上跳过的行数。
- row_count 执行要返回的最大行数
- offset 是可选的。当未指定 offset 时,默认的值 offset 为 0
- LIMIT 一般位于 SELECT 语句的最后
例如
-
LIMIT 5
最多返回 5 个记录行,等效于
LIMIT 0 5
-
LIMIT 2 5
在原始结果集中,跳过 2 个记录行,并从 第 3 个记录行开始,最多返回 5 个记录行。
LIMIT
和 ORDER BY
子句
在 SELECT 语句中, LIMIT
子句经常和 ORDER BY
子句结合使用。比如在下面的场景中:
- ERP 中显示销售额最高的 5 个销售员
- 网站上的点击率最高的 10 个文章
- 论坛中一个月内最活跃的 10 个会员
- 博客网站的文章分页列表
SELECT
select_expression, ...
FROM
table_name
ORDER BY
sort_expression, ...
LIMIT [offset,] row_count;
在此 SELECT
语句中, MySQL 会先按照 ORDER BY
指定的规则对排序结果集,再返回 LIMIT
子句指定的行数返回结果集
MySQL LIMIT
实例
以下实例中,我们使用students
表进行演示
查询年龄最大的3个学生
SELECT * FROM students
ORDER BY age DESC
LIMIT 3;
查询年龄最小的3个学生
SELECT * FROM students
ORDER BY age ASC
LIMIT 3
使用LIMIT
子句进行分页
LIMIT 的一个很重要的应用就是分页查询。对于一些大型的数据表来说,分页查询能很好的减少数据库的消耗和提高用户体验。
如果没有分页查询,所有数据都显示在页面上,会引入以下的问题:
- 增加数据库的性能消耗
- 传输过程中的数据量增加
- 用户的体验不好,太多的数据对让用户眼花缭乱。
假设我们每一页,只显示5条学生信息,整个SQL如下:
SELECT * FROM students LIMIT 5;
要查询第二页,需要先跳过第一页的5行数据,查询第二页,整个SQL如下:
SELECT * FROM students LIMIT 5, 5;
结论
- LIMIT 子句限定查询返回的行数。
- LIMIT [offset,] row_count; 和 LIMIT row_count OFFSET offset; 是等效的。
- offset 指定需要跳过的行数。当 offset 为 0 时,可以省略。
- row_count 指定返回的最大行数。当 row_count 为 0 时,返回结果集为空。
- LIMIT 子句经常用于分页查询。
- LIMIT 子句经常结合 ORDER BY 查询排名列表。
← Mysql基础教程(09):ORDER BY