当前位置:网站首页>【MySQL】MySQL中如何实现分页操作
【MySQL】MySQL中如何实现分页操作
2022-07-30 05:50:00 【饿饿好饿】
MySQL中的分页操作
一、 背景
什么是分页,就是查询时候数据量太大,一次性返回所有查询结果既耗费网络资源、又降低了查询效率,用户也不可能一下子看完成千上万条数据。所以分页的技术就应运而生。分页可以只显示指定数量的数据。
分页在我们的生活中随处可见,如下图所示的电商网站:

二、 实现规则
2.1 关键字 LIMIT
在MySQL中,使用关键字
LIMIT实现分页操作。格式为:LIMIT 位置偏移量, 每页条目数;
当
位置偏移量等于 0 时,该语句可简写为:LIMIT 每页条目数;
【例子1】查询员工表 employees 中的员工的 employee_id 、last_name 、salary 和 department_id 信息。并按每页 20 条来显示。
# 写法一
SELECT employee_id, last_name, salary
FROM employees
LIMIT 0, 20;
# 写法二
SELECT employee_id, last_name, salary
FROM employees
LIMIT 20;
其中,LIMIT 后第一个参数是初始偏移量,即从第几条数据开始显示;第二个参数是每页要显示多少条数据。
查询结果:

显示了员工编号 100~119 的员工。
【例子2】继续上面的例子1,上面的代码只是显示了第一页的数据,如果现在用户想要显示第2页的数据,应该怎么操作呢?可以使用 LIMIT 后第一个参数是初始偏移量来让数据库从第21条数据 (因为第1条数据的编号为 0 ,所以第20条数据的编号就是20) 开始显示。如下代码所示:
SELECT employee_id, last_name, salary
FROM employees
LIMIT 20, 20;
查询结果:

显示了员工编号 120~139 的员工。
【总结】总结一个分页的公式,设每页显示的数据个数为 pageSize,当前是第 pageNo 页,那么就有如下 LIMIT 查询公式:
LIMIT (pageNo - 1) * pageSize, pageSize;
2.2 查询数据库表的第 x x x 条记录
【例子1】查询员工表 employees 中的第 32、33条员工的数据。
SELECT employee_id, last_name, salary
FROM employees
LIMIT 31, 2;
查询结果:

2.3 WHERE…ORDER BY…LIMIT… 的声明顺序 (非执行顺序)
正确的声明顺序如下代码所示:
SELECT employee_id, last_name, salary
FROM employees
WHERE salary >= 5000
ORDER BY salary DESC
LIMIT 0, 10;
查询结果:

三、 拓展
MySQL8.0中对于分页新增了一个新特性,对 LIMIT 后增加了偏移量 OFFSET :
LIMIT 每页条目数 OFFSET 初始偏移量;
对比一下原有的格式,无非就是把 初始偏移量 和 每页条目数 位置调转一下,然后把逗号去掉即可。
LIMIT可以使用在 MySQL、PostgreSQL、MariaDB 和 SQLite 中。LIMIT不可以使用在 Oracle、DB2、SQL Server 中!
边栏推荐
猜你喜欢

STL源码剖析:class template explicit specialization代码测试和理解

Electron之初出茅庐——搭建环境并运行第一个程序

Graphical relational database design ideas, this is too vivid

空间顶点到平面的距离计算的证明及其源码

如何理解普吕克坐标(几何理解)

相机坐标系,世界坐标系,像素坐标系三者转换,以及OPENGLDEFocal Length和Opengl 的 Fov转换

Multithreading basics (multithreaded memory, security, communication, thread pools and blocking queues)

prometheus监控minio

和AI一起玩儿剧本杀:居然比我还入戏

export , export default, import complete usage
随机推荐
iptables命令
Test the basics 01
[硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
The terminal connection tools, rolling Xshell
STL源码剖析:迭代器的概念理解,以及代码测试。
分布式系统中的开创者—莱斯利·兰伯特
schur completement
Rodrigues:旋转矩阵的向量表达
Linx常见目录&文件管理命令&VI编辑器使用 介绍
AI可通过X光片识别种族,但没人知道为什么
export , export default, import complete usage
AI can identify race from X-rays, but no one knows why
openstack删除计算节点
你被MySQL 中的反斜杠 \\坑过吗?
No, the Log4j vulnerability hasn't been fully fixed yet?
idea内置翻译插件
Is it possible to use the same port for UDP and TCP?
DHCP原理与配置
prometheus-federation-tls加密
Proof of distance calculation from space vertex to plane and its source code