mysql | limit 用法详解及注意事项

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-

相关推荐
一 乐5 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
1.14(java)7 小时前
SQL数据库操作:从CRUD到高级查询
数据库
Full Stack Developme7 小时前
数据库索引的原理及类型和应用场景
数据库
IDC02_FEIYA9 小时前
SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)
数据库·windows
辞砚技术录9 小时前
MySQL面试题——联合索引
数据库·面试
萧曵 丶9 小时前
MySQL 主键不推荐使用 UUID 的深层原因
数据库·mysql·索引
小北方城市网10 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
毕设十刻10 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
TDengine (老段)12 小时前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
萧曵 丶12 小时前
事务ACID特性详解
数据库·事务·acid