当前位置:网站首页>【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源码剖析:bound friend template friend代码测试和理解
- Playing script killing with AI: actually more involved than me
- DHCP原理与配置
- The usage of window.open(), js opens a new form
- Boot process and service control
- openstack删除计算节点
- Test Development Engineer Growth Diary 017 - The Life Cycle of a Bug
- PXE高效批量网络装机
- 阿里一面:多线程顺序运行有多少种方法?
- 华为发布“十大发明”,包含计算、智能驾驶等新领域
猜你喜欢

DHCP principle and configuration

引导过程与服务控制

Ali Ermian: How many cluster solutions does Redis have?I answered 4

大飞机C919都用了哪些新材料?

Linx common directory & file management commands & VI editor usage introduction

Selenium02

让百度地图生成器里的“标注”内容展开--解决方案

Calculate the inverse source of the matrix (using the adjoint matrix, a 3x3 matrix)

进程和计划任务管理

华为发布“十大发明”,包含计算、智能驾驶等新领域
随机推荐
Polygon 3D(三维平面多边形)的法向量的计算(MeshLab默认的计算)
计算矩阵的逆源码(使用伴随矩阵,3×3的矩阵)
roslyn folder under bin folder
软件测试术语 - 场景测试
Redis下载与安装
不会吧,Log4j 漏洞还没有完全修复?
让百度地图生成器里的“标注”内容展开--解决方案
@Bean 与 @Component 用在同一个类上,会怎样?
prometheus-basic_auth加密配置
MYSQL-GROUP BY 用法 全网最精,通熟易懂的话解释
matlab机器学习_01
Calculate the inverse source of the matrix (using the adjoint matrix, a 3x3 matrix)
The calculation proof of the intersection of the space line and the plane and its source code
这个终端连接工具,碾压Xshell
Proof of distance calculation from space vertex to plane and its source code
LVM和磁盘配额
(GGG)JWT
What new materials are used in the large aircraft C919?
Test Development Engineer Growth Diary 001 - Some Introduction to Agile Testing, CI/CD/CT, DecOps
The CTO said I was not advised to use SELECT *, why is that?