MySQL中的limit分页的使用

news2024/11/24 6:39:37

SQL准备

create table tb_students (
    id int auto_increment primary key comment '主键ID',
    studentid char(9) unique not null comment '学生学号',
    name varchar(10) not null comment '学生姓名',
    gender char(1) not null comment '学生性别'
) comment '学生表';

insert into tb_students (studentid , name , gender)
values  ('202302301' , '海绵宝宝' , '男'),
        ('202302302' , '胡图图' , '男'),
        ('202302303' , '小福贵' , '男'),
        ('202302304' , '大头儿子' , '男'),
        ('202302305' , '三毛' , '男' ),
        ('202302306' , '柯南' , '男'),
        ('202302307' , '凌美琪' , '女'),
        ('202302308' , '凌美雪' , '女'),
        ('202302309' , '孙悟空' , '男'),
        ('202302310' , '猪八戒' , '男'),

        ('202302311' , '沙和尚' , '男'),
        ('202302312' , '唐僧' , '男'),
        ('202302313' , '林黛玉' , '女'),
        ('202302314' , '贾宝玉' , '男'),
        ('202302315' , '奥特曼' , '男'),
        ('202302316' , '汤姆' , '男'),
        ('202302317' , '杰瑞' , '男'),
        ('202302318' , '朵拉' , '女'),
        ('202302319' , '一休' , '男'),
        ('202302320' , '米老鼠' , '男'),

        ('202302321' , '唐老鸭' , '男'),
        ('202302322' , '哆啦A梦' , '男'),
        ('202302323' , '成龙' , '男'),
        ('202302324' , '小玉' , '女'),
        ('202302325' , '加菲猫' , '男'),
        ('202302326' , '喜羊羊' , '男'),
        ('202302327' , '灰太狼' , '男'),
        ('202302328' , '虹猫' , '男'),
        ('202302329' , '蓝兔' , '女'),
        ('202302330' , '洛洛' , '男');

这里面有你们喜欢的童年回忆吗?

没错,我也喜

 ...

 

按照我的理解,我把他分为这两部分来进行讲解

第一部分:查询指定分页语句


limit 带一个参数

语法:limit 每页显示记录数;

需求1:查询第一页前 5 行的记录

解析:第一页要展示 5 条数据,写个 5 就行了。

SQL 编写:

select * from tb_students limit 5;

查询结果如下:

limit 带二个参数

语法:limit 起始索引,每页显示记录数;

起始索引 = 起始索引 - 1

注意:所有的起始索引都是从 0 开始的。

需求 2:查询第一页 1 - 5 行的记录(跟需求 1 的题意是一样的,只是带的参数的个数不同)

解析:

limit 第一个参数(起始索引):

起始索引 = 起始索引 - 1 ,那就是 1 - 1 = 0;

limit 第二个参数(每页显示记录数):

显示 5 行记录,那就是 5。

SQL 编写:

select * from tb_students limit 0,5;

查询结果如下:

提示:如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 每页查询记录数,就比如需求 2 的 SQL 可以写成需求 1,可以直接简写成 limit 5。

需求3:查询第 7 行的记录,显示 2 行记录

解析:

limit 第一个参数(起始索引):

起始索引 = 起始索引 - 1 ,那就是 7 - 1 = 6;

limit 第二个参数(每页显示记录数):

显示 2 行记录,那就是 2。

SQL 编写:

select * from tb_students limit 6, 2;

查询结果如下:

 另一种写法:

语法:limit 每页显示记录数 offset 起始索引;

起始索引 = 起始索引 - 1

用法和带两个参数的 limit 一样;只有语法区别:起始索引 和 每页显示记录数 顺序调换了,“,”号换成了 offset。

SQL 编写:

select * from tb_students limit 2 offset 6;

得到的执行结果如下:

第二部分:显示固定分页语句


语法:limit 起始索引,每页显示记录数;

起始索引 = (查询页码 - 1)* 每页显示记录数

注意:分页的第一页数据不参与起始索引计算。

需求:固定每页展示 5 条记录,求 1 - 3 页的记录

第一页(不参与起始索引的计算)

SQL编写:

select * from tb_students limit 0,5;-- 显示 1 - 5 行记录

查询结果如下: 

第二页

解析:

limit 第一个参数(起始索引):

根据公式:起始索引 =(查询页码 - 1)* 每页显示记录数

因为是查询第二页的数据,所以查询页码是 2,然后 2 还要去 - 1,得出:(2 - 1) = 0;

再 * 每页显示记录数,每页展示记录数为 5,得出最终结果: 0 * 5 = 5;

起始索引的值为 5。

limit 第二个参数(每页显示记录数):

根据需求得出:每页展示记录数为 5。

SQL编写:

select * from tb_students limit 5,5;-- 显示 6 - 10 行记录

查询结果如下:  

第三页

解析:

limit 第一个参数(起始索引):

根据公式:起始索引 =(查询页码 - 1)* 每页显示记录数

因为是查询第三页的数据,所以查询页码是 3,然后 3 还要去 - 1,得出:(3 - 1) = 2;

再 * 每页显示记录数,每页展示记录数为 5, 2 * 5 = 10;

起始索引的值为 10。

limit 第二个参数(每页显示记录数):

根据需求得出:每页展示记录数为 5。

SQL编写:

select * from tb_students limit 10,5;-- 显示 11 - 15 行记录

查询结果如下:   

完整SQL:

select * from tb_students limit 0,5;-- 显示 1 - 5 行记录
select * from tb_students limit 5,5;-- 显示 6 - 10 行记录
select * from tb_students limit 10,5;-- 显示 11 - 15 行记录

如果要查询第四页、第五页......的数据,按照这个公式,以此类推。。。


 

如果学会了,来做一下练习吧!!!

 需求:固定每页展示 10 条记录,求 3 页的记录

select * from tb_students limit ?;
select * from tb_students limit ?;
select * from tb_students limit ?;

做完看答案:

select * from tb_students limit 0,10;-- 显示 1 - 10 行记录
select * from tb_students limit 10,10;-- 显示 11 - 20 行记录
select * from tb_students limit 20,10;-- 显示 20 - 30 行记录

完。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习 - 2】:数据集的处理

文章目录训练集和数据集分离获取最优模型超参数寻找最优模型网格搜索的使用训练集和数据集分离 训练集和数据集分离的原理:当我们获取一个数据集时,我们需要将其一小部分拿出来作为测试集,剩余的作为训练集。例如对于一个训练集,将…

RocketChip RISC-V生成RTL到仿真全流程

一、Scala配置项修改和RTL代码生成可以通过对scala中的配置项修改,来达到定制化配置RISC-V的目的,这里总结几个比较常用的配置项、配置项含义和所在的scala中的位置:1.$rocket-chip/src/main/scala/system/Config.scala1)new With…

机器学习-2-安装Python 3.6和Pytorch 1.1.0

0. 说明: 之前根据GPU版本安装了CUDA 9.0,因此现安装与CUDA 9.0相对应的Pytorch版本,但在安装Pytorch之前要先确认一下Python的版本。 1. 查看 CUDA 9.0 对应的 Pytorch 从https://pytorch.org/get-started/previous-versions/中查找CUDA …

程序的机器级表示part1——程序编码与数据格式

目录 1. 汇编语言和机器级语言 1.1 不同的编程语言 1.2 Linux下的汇编语言 2. 程序编码 1.1 机器级代码 1.2 代码示例 3. 数据格式 本文基于CSAPP第三章撰写,主要介绍部分x86-64汇编的相关知识,后续会将该部分内容慢慢完善(PS&a…

Web Spider XHR断点 千千XX 歌曲下载(三)

Web Spider XHR断点 千千XX 歌曲下载 首先声明: 此次案例只为学习交流使用,切勿用于其他非法用途 注:网站url、接口url请使用base64.b64decode自行解码 文章目录Web Spider XHR断点 千千XX 歌曲下载前言一、资源推荐二、任务说明三、网站分析四、XHR断点…

knife4j使用与步骤

1、导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version> </dependency>2、knife4j的配置类&#xff08;可有可无&#xff09;package…

为什么程序员的工资比其他行业高这么多?

不止一次听到有人说程序员工资高&#xff0c;更有甚者喊着“把IT工资打下来”。 拜托大哥大姐们&#xff01;看事情要客观好吧&#xff01;&#xff01; 虽然看起来程序员工资是不少&#xff0c;对比其他行业确实会高一些&#xff0c;但并不代表程序员这个岗位工资就要压到三千…

Elasticsearch:如何在 Elasticsearch 中正确使用同义词功能

同义词用于提高搜索质量并扩大匹配范围。 例如&#xff0c;搜索 England 的用户可能希望找到包含 British 或 UK 的文档&#xff0c;尽管这三个词完全不同。 Elasticsearch 中的同义词功能非常强大&#xff0c;如果实施得当&#xff0c;可以使你的搜索引擎更加健壮和强大。 在…

详解结构体内存对齐

目录 前言 一、结构体内存对齐规则 二、 offsetof 宏 三、结构体内存对齐的原因 四、 修改默认对齐数 前言 引入问题&#xff1a; #include <stdio.h>struct S {char c1;int i;char c2; };int main() {printf("%zd\n", sizeof(struct S));return 0; } 程…

干货 | 人脸识别技术的风险及应对方案

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;人脸识别技术概述人脸识别的发展阶段&#xff0c;主要分为三个阶段&#xff1a;起步阶段&#xff08;1950s-1980s&#xff09;&#xff0c;这一阶段的人脸识别只是作为一般性…

房产管理系统---系统安全性需求分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

Linux学习笔记——HBase集群安装部署

5.11、大数据NoSQL数据库HBase集群部署 5.11.1、简介 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同&#xff1a; Redis设计为少量数据&#xff0c;超快检索HBase设计…

【部署】Docker容器

Docker 使用 Google 公司推出的 Go 语言进行开发实现&#xff0c;基于 Linux 内核的 cgroup、namespace 以及 OverlayFS 类的 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程&#xff0…

算法刷题打卡第63天:对称二叉树

对称二叉树 难度&#xff1a;简单 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false…

BOM浏览器对象模型

文章目录一、BOM概述1、什么是BOM2、BOM的构成二、window 对象的常见事件1、窗口加载事件&#xff08;1&#xff09;window.onload&#xff08;3&#xff09;DOMContentLoaded2、调整窗口大小事件三、定时器1、两种定时器2、setTimeout()定时器3、停止 setTimeout() 定时器4、s…

如何使用CMD修复硬盘命令来解决硬盘问题?

随着计算机的越来越普及&#xff0c;现在在我们的日常生活中都会使用到计算机电脑。硬盘作为计算机电脑的主要存储设备&#xff0c;里面存储着我们平时使用的软件文件、文档资料、照片等重要的数据文件。一旦硬盘损坏会给我们带来许多不必要的麻烦&#xff0c;那硬盘损坏有哪些…

图解卡尔曼滤波(Kalman Filter)

背景关于滤波首先援引来自知乎大神的解释。“一位专业课的教授给我们上课的时候&#xff0c;曾谈到&#xff1a;filtering is weighting&#xff08;滤波即加权&#xff09;。滤波的作用就是给不同的信号分量不同的权重。最简单的loss pass filter&#xff0c; 就是直接把低频的…

【Linux操作系统】1. Linux操作系统简介、安装

前言 本系列是Linux操作系统的一些知识以及实践内容&#xff0c;Linux操作系统作为开发最常使用的操作系统&#xff0c;是必备的一门求职、提升技术。本文先介绍Linux操作系统&#xff0c;并安装一个Linux操作系统。 Linux操作系统简介 Linux&#xff0c;全称GNU/Linux&#…

Javadoc

Javadoc 在学习JavaSE时&#xff0c;我们知道Java支持三种注释方式&#xff1a; 单行注释多行注释文档注释 Javadoc是文档注释&#xff0c;用来对类或方法进行标准的注释&#xff0c;在开发中写好JavaDoc非常重要。 在调用方法时&#xff0c;你可能会看到这样的情景 这种注…

Unity - 搬砖日志 - 如何设置AssetDatabase.Create(“xxx.asset“, mesh) 的Read/Write=false

最近很忙&#xff0c;想写的 BLOG 都遗漏编写了 踩坑的时间比较多&#xff0c;充电的时间少了很多 为了减少以后自己填坑时间&#xff0c;随便简单的记录一下 搬砖日志 环境 unity : 2020.3.37f1 pipeline : brp 问题 因为之前搜索、购买、使用了各式各样的 LOD 插件、工具…