Mysql对Limit使用问题
这是mysql中limit分页的语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
每页显示3条数据,查询第一页
select * from limit 3,3;
每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
每页显示3条数据,查询第3页数据
select * from stu limit 6 , 3;
从上面的练习推导出起始索引计算公式:
起始索引 = (当前页码 - 1) * 每页显示的条数
现在,我要查询第5页select * from tbl_emp limit 15,3;
按照上面的公式计算:
我在查询第6页
select * from tbl_emp limit 18,3;
# limit 语法: SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
# limit 起始索引(18) * 查询条目数(3) 索引0开始 就展示第19条
# 展示的数据: 19,20,21
# 页面数据: 18(索引)/3 = 6(页码);
# 起始索引(公式) = (页码[6] - 1) * 每页显示条数(3) = 15;
我发现了,这不对数据不是一致性,这页码没有算出来起始索引.
我发现我可能理解错误了
接着回到那条sql
select * from stu limit 18,3;
# limit 语法: SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
# limit 起始索引(18) * 查询条目数(3) 索引0开始 就展示第19条
# 展示的数据: 19,20,21
# 页面数据:
应该从展示的数据的最后一位(21)去获取值,我们接着看
页面数据:查询最后一位->21(条) / 3(显示) = 7(页码);
# 接着来算起始索引(公式):
# 起始索引 = (页码 - 1) * 每页显示条数;
(页码)(7 - 1) = 6;
6 * 3(每页显示条数) = 18(起始索引);
# 发现没有 起始索引算出来了
疑问
大家可能会有小问题,说我分页后的数据没有是19,20,没有21了,21给我删掉了,那怎么办,mysql会怎么帮我们解决呢?答:向上取整数,不管你有没有21,有没有20,只要前面数据正常,有18,你在插入一条数据19,哎,他就会帮我们默认多显示一页数据,就是查询条目数。
最后:
本来我是向来请教大家这个问题的,可能是我方式不对,就分页很不懂,我就去看,很多老师告诉了我们计算 起始索引计算方式,缺少了页码获取,我就一头雾水,这个页码怎么能去拿索引获取的,不对啊,原来是我方式错误了,方法对确实能解决很多问题啊,最后页码获取为
分页后的数据最后一条 / 显示的数据 = 页码
分页后起始索引获取: 起始索引= (页码-1) * 页码
页码-1是因为索引从0开始的,不懂的兄弟可以回去复习复习(数组).
最后,谢谢您的观看!!!! 欢迎指错
0.0 问答版本你就直接发疑问吧