第05章_排序与分页

news2025/5/15 7:02:00

第05章_排序与分页


1. 排序数据

1.1 排序规则

  • 使用 ORDER BY 子句排序
    • ASC(ascend): 升序
    • DESC(descend):降序
  • ORDER BY 子句在SELECT语句的结尾。

1.2 单列排序

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;

1554974255957

1554974260133

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

1554974822229

1554974827522

SELECT employee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;

1554974853194

1554974858252

1.3 多列排序

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

1554974901572

1554974907498

  • 可以使用不在SELECT列表中的列排序。
  • 在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

2. 分页

2.1 背景

背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢?

背景2:表里有 4 条数据,我们只想要显示第 2、3 条数据怎么办呢?

2.2 实现规则

  • 分页原理

    所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。

  • MySQL中使用 LIMIT 实现分页

  • 格式:

    LIMIT [位置偏移量,] 行数
    

    第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。

  • 举例

--前10条记录:
SELECT * FROM 表名 LIMIT 0,10;
或者
SELECT * FROM 表名 LIMIT 10;

--第11至20条记录:
SELECT * FROM 表名 LIMIT 10,10;

--第21至30条记录: 
SELECT * FROM 表名 LIMIT 20,10;

MySQL 8.0中可以使用“LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT 4,3;”返回的结果相同。

  • 分页显式公式**:(当前页数-1)每页条数,每页条数*
SELECT * FROM table 
LIMIT(PageNo - 1)*PageSize,PageSize;
  • 注意:LIMIT 子句必须放在整个SELECT语句的最后!
  • 使用 LIMIT 的好处

约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。如果我们知道返回结果只有 1 条,就可以使用LIMIT 1,告诉 SELECT 语句只需要返回一条记录即可。这样的好处就是 SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。

2.3 拓展

在不同的 DBMS 中使用的关键字可能不同。在 MySQL、PostgreSQL、MariaDB 和 SQLite 中使用 LIMIT 关键字,而且需要放到 SELECT 语句的最后面。

  • 如果是 SQL Server 和 Access,需要使用 TOP 关键字,比如:
SELECT TOP 5 name, hp_max FROM heros ORDER BY hp_max DESC
  • 如果是 DB2,使用FETCH FIRST 5 ROWS ONLY这样的关键字:
SELECT name, hp_max FROM heros ORDER BY hp_max DESC FETCH FIRST 5 ROWS ONLY
  • 如果是 Oracle,你需要基于 ROWNUM 来统计行数:
SELECT rownum,last_name,salary FROM employees WHERE rownum < 5 ORDER BY salary DESC;

需要说明的是,这条语句是先取出来前 5 条数据行,然后再按照 hp_max 从高到低的顺序进行排序。但这样产生的结果和上述方法的并不一样。我会在后面讲到子查询,你可以使用

SELECT rownum, last_name,salary
FROM (
    SELECT last_name,salary
    FROM employees
    ORDER BY salary DESC)
WHERE rownum < 10;

得到与上述方法一致的结果。

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

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

相关文章

Java基础学习(15)

Java基础学习 一、IO流进阶1.1 缓冲流1.1.1字节缓冲流1.1.2 字符缓冲流 1.2 转换流1.3 序列流1.4 反序列化流 /对象操作输入流1.4.1 序列化流/反序列化流的细节汇总 1.5 打印流1.5.1 字节打印流1.5.2 字符打印流 1.6 解压流、压缩流1.7 Commons-io1.8 hutool工具包 一、IO流进阶…

【C#】RemoveAt索引越界问题

系列文章 【C#】单号生成器&#xff08;编号规则、固定字符、流水号、产生业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器&#xff08;开始日期、结束日期&#xff09; 本文链接&#xff1a;h…

使用FFMPEG和SDL2实现音视频同步的简易视频播放器

程序框架 由于之前都是针对FFMPEG某一个功能做的测试和学习。这里我简单做了一个视频播放器&#xff0c;并简单做了音视频同步。在此记录大致过程。 大致框架如下&#xff1a; 主线程 1.加载视频文件&#xff0c;查找音视频流信息 2.初始化音视频解码器 3.初始化SDL并设置…

题解校验码—CRC循环校验码与海明校验码

码距 一个编码系统的码距是任意两个码字的最小距离。 例如个编码系统采用三位长度的二进制编码&#xff0c;若该系统有四种编码分别为&#xff1a;000&#xff0c;011&#xff0c;100&#xff0c;111&#xff0c;此编码系统中000与111的码距为3&#xff1b;011与000的码距为2…

POE:性价比最高的 AI 整合网站

创作不易&#xff0c;如果本文对你有帮助&#xff0c;胖友记得一键三连 &#x1f62d;。更多 AI 优质内容推荐请关注主页 “AI” 专栏&#xff0c;笔者会不定期更新觉得自己用下来还不错的 AI 相关产品。 1.介绍 Poe 是一款同时整合了 ChatGPT、Sage、GPT-4、Claude、Claude-in…

经典神经网络(2)AlexNet及其在Fashion-MNIST数据集上的应用

2、深度卷积神经网络AlexNet ImageNet 数据集&#xff1a;一个开源的图片数据集&#xff0c;包含超过 1400万张图片和图片对应的标签&#xff0c;包含2万多个类别。 自从2010 年以来&#xff0c;ImageNet 每年举办一次比赛&#xff0c;即&#xff1a;ImageNet 大规模视觉识别挑…

数组排序算法

数组排序算法 一、冒泡排序算法二、直接选择排序三、插入排序四、反转排序 一、冒泡排序算法 冒泡排序算法&#xff1a; 类似气泡上涌的动作&#xff0c;会将数据在数组中从小到大或者从大到小不断向前移动。 基本思想&#xff1a; 冒泡排序的基本思想是对比相邻的两个元素值&…

并发编程(二) — 内存可见性问题

目录 前言 内存可见性问题 synchronized volatile CAS算法 CAS算法原理 CAS算法应用场景 CAS算法代码实现 参考目录 前言 在谈共享变量的内存可见性问题之前&#xff0c;先谈谈线程安全问题 &#xff0c;线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同…

c高级day4作业

有m1.txt m2.txt m3.txt m4.txt&#xff0c;分别创建出对应的目录&#xff0c;m1 m2 m3 m4 并把文件移动到对应的目录下使用break关键字打印九九乘法表&#xff0c;提示&#xff1a;printf "%d * %d %d" $i $j $((i*j)) #!/bin/bash for i in m1 m2 m3 m4 do#文件夹…

只限今日免费,Midjourney 5.1震撼更新!逼真到给跪,中国情侣细节惊艳,3D视频大片马上来

来源 | 新智元 微信号&#xff1a;AI-era 【导读】全新升级的Midjourney让全网又疯狂了&#xff0c;创造力解禁&#xff0c;出图更逼真。重要的是&#xff0c;限时免费到今天&#xff0c;要玩的抓紧了。 一个月前&#xff0c;Midjourney V5画的一对中国完美情侣在网上爆火&am…

涅槃重生,BitKeep如何闯出千万用户新起点

在全球&#xff0c;BitKeep钱包现在已经有超过千万用户在使用。 当我得知这个数据的时候&#xff0c;有些惊讶&#xff0c;也有点意料之中。关注BitKeep这几年&#xff0c;真心看得出这家公司的发展之迅速。还记得2018年他们推出第一个版本时&#xff0c;小而美&#xff0c;简洁…

python和pycharm的安装(安装包免费下载共享)

说明&#xff1a; 本文内容包括Python和Pycharm安装。 一、python安装&#xff1a; python是一门编程语言&#xff0c;安装python是为了能在电脑上使用这门语言。 1、python下载 下载链接&#xff1a;https://pan.baidu.com/s/1mWsJjO8HngNQtINCzu0bBA 提取码&#xff1a;9…

又又又发现了一个 AI 插件神器 TeamSmart

简介 TeamSmart AI 是最近比较火的 Chrome 插件&#xff0c;它是基于 ChatGPT 集成的 AI 助手团队工具 对&#xff0c;没错&#xff0c;是一个团队。这个团队里面有许多不同角色的成员&#xff0c;每隔成员都有自己的专业领域&#xff0c;比如商业、市场营销、灵魂写手、程序…

批量查看域名历史软件-网站老域名批量查询注册

未注册备案域名批量扫描软件 未注册备案域名批量扫描软件是专门用于批量扫描未备案的域名的一种工具。它可以快速识别未备案的域名&#xff0c;并帮助用户抓住还未被注册的值得备案的域名&#xff0c;以便用户及时注册备案并使用。 该软件主要具有以下几个优点&#xff1a; 高…

【小程序】输入框检验姓名、身份证(正则表达式)并提交

目标 输入绑定姓名、身份证号并进行校验若未填或校验不通过则显示绑定失败的轻提示若通过校验并提交则显示绑定成功 使用Vant Weapp (gitee.io)库。 思路与代码 html&#xff1a; wx:model绑定输入框输入的值data-key是一个属性&#xff0c;在js中的e.currentTarget.datase…

【新星计划-2023】ARP“攻击”与“欺骗”的原理讲解

网络管理员在网络维护阶段需要处理各种各样的故障&#xff0c;出现最多的就是网络通信问题。除物理原因外&#xff0c;这种现象一般是ARP攻击或ARP欺骗导致的。无论是ARP攻击还是ARP欺骗&#xff0c;它们都是通过伪造ARP应答来实现的。 一、ARP攻击原理 一般情况下&#xff0…

TypeScript语言编译命令

1. 安装 npm install -g typescript2. 编译 tsc工具是TypeScript编译器的控制台接口&#xff0c;它可以将TypeScript文件编译成JavaScript文件&#xff1b; 编译文件&#xff1a; tsc [options] [file ...]查看编译命令的帮助信息&#xff1a; tsc --help或者 tsc -h或者 tsc…

微服架构基础设施环境平台搭建 -(一)基础环境准备

微服架构基础设施环境平台搭建 -&#xff08;一&#xff09;基础环境准备 通过采用微服相关架构构建一套以KubernetesDocker为自动化运维基础平台&#xff0c;以微服务为服务中心&#xff0c;在此基础之上构建业务中台&#xff0c;并通过Jekins自动构建、编译、测试、发布的自动…

【Java AWT 图形界面编程】IntelliJ IDEA 乱码问题最佳配置方案 ( 配置文件编码 | 配置编译器编码参数 | 配置运行时编码参数 )

文章目录 一、IntelliJ IDEA 乱码问题二、IntelliJ IDEA 乱码问题最佳配置方案1、文件编码设置成 UTF-82、编译器编码参数设置成 UTF-83、 配置运行时编码参数为 GBK 一、IntelliJ IDEA 乱码问题 在 IntelliJ IDEA 中开发 AWT / Swing 图形界面程序 , 经常遇到乱码问题 ; 文件…

博文的跑路笔记

HTML CSS Flex布局 使用flex布局 容器 .box {display: flex; }行内元素 .box {display: inline-flex; }flex布局后&#xff0c;float、vertical-align、clear失效。 容器属性 flex-direction&#xff1a;主轴方向 属性值 row&#xff1a;子元素起点在左&#xff0c;左到右。…