MySQL Limit用法笔记

最近用低代码平台amis, 2天搭了一个审核系统,为了快点看到效果,没有使用框架的ORM,直接写SQL,结果分页展示数据,总数比展示数据多一条,原因是在MySQL Limit上翻车了。特别震惊,工作这么多年了,自己真的不知道limit的用法。

一、带着问题去思考
下面两条SQL, 加limit后数据少一条,一脸懵逼了好久。简单的问题看出了自己的无知。

mysql> select id from img_pic_approve where status = 3 limit 1, 10;
+------+
| id   |
+------+
| 5743 |
| 5746 |
| 5748 |
| 5738 |
| 5735 |
| 5736 |
+------+
6 rows in set (0.00 sec)

mysql> select id from img_pic_approve where status = 3;
+------+
| id   |
+------+
| 5742 |
| 5743 |
| 5746 |
| 5748 |
| 5738 |
| 5735 |
| 5736 |
+------+
7 rows in set (0.00 sec)

二、Limit用法
1、功能
Limit子句可以被用于强制select语句返回指定的记录数。返回前几条或中间某几条数据。

2、语法格式
offset为偏移量【初始记录行的偏移量是0,注意不是1】,rows为返回的记录数

# 用法一
SELECT * FROM table_name LIMIT [offset,] rows;

#用法二
SELECT * FROM table_name LIMIT rows OFFSET offset;

3、一般习惯用方式一

# 查前5条记录
select * from table_name limit 5;

# 等价于
select * from table_name limit 0, 5;

4、Web应用中的分页功能

select * from table_name limit (paeg - 1) * pagesize, pagesize;

参考:
MYSQL LIMIT 用法【菜鸟网络,比较基础】
MySQL的limit用法和分页查询的性能分析及优化【思否-比较系统】
廖雪峰分页查询【可以在线测试验证】

发表评论

电子邮件地址不会被公开。 必填项已用*标注