安徽省网站建设_网站建设公司_移动端适配_seo优化
2025/12/20 22:17:50 网站建设 项目流程

mysql 中的 limit 用来限制 select 查询返回的行数,程序中常被用作分页查询。

一、limit 用法及示例

(一)基础用法及示例

语法:select * from 表名 limit [offset,] count

参数说明:

offset:偏移量,即指跳过多少行,可省略,默认为 0,表示跳过 0 行;范围为 [0,+∞)。

count:跳过 offset 行后,取 count 行数据,范围为 [0,+∞)。

特别注意:limit 中的 offset 和 count 必须大于等于 0;且不能为表达式,只能为明确的数字。

实例1:获取前3行记录

命令:select * from per_data limit 0,3;

实例2:获取第1行紧接着的2行记录

命令:select * from per_data limit 1,2;

(二)获取值最大的一条记录

实例:获取 id_num 值最大的一条记录。

思路:先按照 id_num 降序排序,然后取第一条记录。

命令:select * from per_data order by id_num desc limit 1;

(三)获取第 n 行到第 m 行数据

语法:select * from 表名 limit n-1,m-n+1; # offset 与 count 都是从0开始且为左闭右开。

实例:获取 per_data 表的第 3 到第 5 行的数据

命令:select * from per_data limit 2,3;

(四)实现分页查询

page:表示第几页,从1开始,范围 [1,+∞)

pageSize:每页显示多少条记录,范围 [1,+∞)

语法:select * from 表名 limit (page-1)*pageSize,pageSize;

原理与获取第 n 行到第 m 行数据相同

需要注意的是,在分页排序时,最好根据主键来排除二义性,在二义性情况下会导致分页结果混乱。

注:这里的二义性可理解为,按价格给商品排序,当遇到价格相同时,该怎么排序?价格相同又没指定其他条件,mysql 就乱排了。

二、limit X, -1 已不可使用

limit X, -1 早已不可使用,本身也是一个错误

(一)错误情况

需求:使用 mysql 时,需要获取第 X 条数据之后的所有数据。

这时,首先想到的就是利用 limit 来实现。

早期的部分文章或者资料中,提到可以使用:limit X,-1

例如,获取第一条后的所有数据,则可写成如下 sql 语句:

select * from per_data limit 1,-1;

执行该 sql 语句后,会发现报错如下:

错误提示原文:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' at line 1

(二)错误原因及解决办法

错误原因:据官方解释,limit X, -1 这种形式被认为是一个优先级较低的 bug ,已经被修复,修复后的 limit ,将不再接收负数,两个参数都必须大于或等于 0 。

上图原文链接:https://bugs.mysql.com/bug.php?id=2037

(三)解决办法

任意填写一个满足需求的足够大的正数即可。

比如,示例表 per_data 中一共有 6 条数据,要求是获取第一条后的所有数据。

语法:【limit 1,count】 ,其中 count 可以是 [5,+∞)中的任意一个数。

完整语句如下:

select * from per_data limit 1,5;#这里的5可替换成任意一个大于5的数字

以上就是 mysql 中 limit 的用法及相关注意事项,可供参考。

-end-

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询