第05章_MySQL排序与分页

news2024/11/24 17:36:11

第05章_排序与分页

讲师:尚硅谷-宋红康(江湖人称:康师傅)

官网:http://www.atguigu.com


1. 排序数据

如果没有使用排序操作,默认情况下查询返回的数据时按照添加数据的顺序显示的

SELECT employee_id, last_name, salary
FROM employees;

image-20230214142002278

1.1 排序规则

  • 使用 ORDER BY 子句排序
    • ASC(ascend):升序(默认情况)
    • DESC(descend):降序
  • 可以使用不在SELECT列表中的列排序

1.2 单列排序

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary;
或
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary ASC;

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

1.3 多列排序

SELECT employee_id, salary, department_id 
FROM employees
ORDER BY department_id DESC, salary ASC;

image-20230214143155181

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

2. 分页

2.1 背景

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

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

2.2 实现规则

  • MySQL中使用 LIMIT 实现分页,格式:
LIMIT 位置偏移量,行数

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

第二个“行数”参数指示返回的记录条数。

  • 分页显式公式:(当前页数-1)每页条数,每页条数*
SELECT * 
FROM table 
LIMIT (PageNo - 1)*PageSize,PageSize;
  • 举例
#每页显示20条记录,此时显示第1页
SELECT employee_id, last_name
FROM employees
LIMIT 0,20
或
SELECT employee_id, last_name
FROM employees
LIMIT 20

image-20230214150655927

#每页显示20条记录,此时显示第2页
SELECT employee_id, last_name
FROM employees
LIMIT 20,20

image-20230214150758399

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

SELECT employee_id, last_name
FROM employees
LIMIT 20 OFFSET 0;

image-20230214151537519

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/346496.html

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

相关文章

yocto创建自己的machine

前面讲了如何离线构建yocto工程&#xff0c;这节讲如何创建自己的machine&#xff0c;在初始化yocto启动bitbake需要输入如下命令 DISTROfsl-imx-fb MACHINEimx6ull14x14evk source imx-setup-release.sh -b build其中DISTRO用来指定发行版本 MACHINE用来指定硬件平台 build为构…

HTML复习1

VSCode 工具生成骨架标签新增代码 < !DOCTYPE html>表示的什么意思&#xff1f; 这句代码的意思是&#xff1a;当前页面采取的是HTML5版本来显示网页. 注意&#xff1a; < !DOCTYPE> 声明位于文档中的最前面的位置&#xff0c;处于 < html> 标签之前。< …

SAP S/4HANA Cloud 2302 财务模块亮点

&#xff08;亮点1:&#xff09;含项目制造的按订单设计 (ETO) 使用 SAP S/4HANA Cloud 2302&#xff0c;新的范围项目 6GD首先发布在德国和美国的国家版本下&#xff0c;提供项目制造的按订单设计 (ETO)的功能。 价值体现 借助 ETO 解决方案&#xff0c;您可以&#xff1a;…

【模型部署】TensorRT的安装与使用

文章目录1.TensorRT的安装1.1 cuda/cudnn以及虚拟环境的创建1.2 根据cuda版本安装相对应版本的tensorRT2. TensorRT的使用2.1 直接构建2.2 使用 Python API 构建2.3 使用 C API 构建2.3.1 属性配置2.3.2 验证2.4 IR 转换模型2.4.1 使用 Python API 转换2.4.2 使用 C API 转换2.…

Moonbeam生态说|走近生态项目SubWallet

「Moonbeam生态说」是Moonbeam中文爱好者社区联合Moonbeam中文高级大使组织的社区AMA活动。该活动为已部署Moonriver或Moonbeam的项目方提供了在主流Moonbeam非官方中文社区内介绍自己的项目信息&#xff0c;包括&#xff1a;项目介绍、团队介绍、技术优势等&#xff0c;帮助社…

【Unity VR开发】结合VRTK4.0:创建抽屉

语录&#xff1a; 为有牺牲多壮志&#xff0c;敢叫日月换新天。 前言&#xff1a; 前面我们知道了门的基本实现原理是通过角度驱动器实现的&#xff0c;那么今天我们来实现一下抽屉的实现原理&#xff1a;线性驱动器。 正文&#xff1a; 步骤一&#xff1a; 首先我们需要在新…

零基础学Java要具备哪些前提条件?

很多零基础的学员对于学Java比较迷茫&#xff0c;想通过学Java掌握一技之长&#xff0c;却不知道入门需要具备哪些条件?不知道怎么去学习?下面详细来和大家聊聊&#xff1a;首先&#xff0c;要对Java语言感兴趣&#xff0c;兴趣是最好的老师&#xff0c;只有拥有兴趣才能在学…

浅析云边端协同架构的应用意义与EasyCVR视频融合能力升级

随着5G时代的到来&#xff0c;万物互联产生了海量数据&#xff0c;据IDC预测&#xff0c;到2025年全球设备连接总数将达到1000亿&#xff0c;集中式处理模型下核心网络无法承载如此大的数据量传输&#xff0c;数据也无法在云中心存储计算&#xff0c;因此基于云边端的架构模式成…

ATR指标在外汇交易中的另类运用方法

当涉及到外汇交易时&#xff0c;有许多不同的指标可以使用。然而&#xff0c;ATR指标可能是一个被低估的工具&#xff0c;可以帮助您发现有利可图的交易机会。本文将介绍ATR指标是什么&#xff0c;如何使用它来识别价格波动和制定交易策略&#xff0c;以及如何在外汇市场中另辟…

DRF之实战总结

前言 DRF概念&#xff1a;Django REST framework框架是一个用于构建Web API的强大而又灵活的工具. 通常简称为DRF框架 或 REST framework框架 特点&#xff1a; 提供了定义序列化器serializer的方法,可以快速根据Django ORM或者其他库自动序列化/反序列化;提供了丰富的类视图…

解决rimraf使用时提示unexpected token “.”

解决rimraf使用时提示unexpected token “.” 前言 最近运行一个Cordova项目时&#xff0c;npm install后打包&#xff0c;命令栏提示了下面这个问题&#xff1a; 很奇怪啊&#xff0c;就我这里有问题&#xff0c;别人之前都没事&#xff0c;很头疼。 问题原因 经过一番摸索…

centos安装FastDFS,集成到SpringBoot中

前言 本教程采用centos7 实测 安装fastdfs&#xff0c;每一步都存在截图&#xff0c;安装不成功你就我 最关键的是采用springboot 集成 fastdfs&#xff0c;上传保存文件信息 小序 FastDFS是一个开源的分布式文件系统&#xff0c;她对文件进行管理&#xff0c;功能包括&…

为什么时间序列预测这么难?本文将给你答案

机器学习和深度学习已越来越多应用在时序预测中。ARIMA 或指数平滑等经典预测方法正在被 XGBoost、高斯过程或深度学习等机器学习回归算法所取代。 尽管时序模型越来越复杂&#xff0c;但人们对时序模型的性能表示怀疑。有研究表明&#xff0c;复杂的时序模型并不一定会比时序…

如果网站的 Cookie 特别多特别大,会发生什么(二)

协议 仔细回顾一遍 Cookie 属性&#xff0c;除了 secure&#xff0c;再没和 URL Scheme 相关的属性了。 HTTPS是在HTTP上建立SSL加密层&#xff0c;并对传输数据进行加密&#xff0c;是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯&#xff0c;例如交易支付方面。…

C++类基础(十四)

类的继承——虚函数 ● 通过虚函数与引用&#xff08;指针&#xff09;实现动态绑定 – 使用关键字 virtual 引入 – 非静态、非构造函数可声明为虚函数 – 虚函数会引入vtable结构 ● dynamic_cast static_cast, reinterpret_cast, const_cast在编译期发生。 dynamic_cast在…

Linux常用命令--目录文件管理

Linux常用命令一、目录与文件管理场景一&#xff1a;我是谁场景二&#xff1a;我在哪&#xff1f;跳转目录场景三&#xff1a;查看目录内容场景四&#xff1a;创建目录场景五&#xff1a;如何在目录中创建一个文件场景六&#xff1a;如何编辑一个简单文本文件&#xff1f;场景七…

用Python实现自动发送周报给老板,强制周报不用愁

前言 老板每周要求写周报上交&#xff1f; 像我这种记性不好的&#xff0c;一个月四周忘记三次 只能用点小技术&#xff0c;用Python写个小工具&#xff0c;让它每周帮我给老板发周报~ Github: Weekday 小工具 目标细化 SMTP发送邮件, 用smtplib 读取配置文件 发件人 收件…

uml图六种箭头的含义

在看uml图忘记箭头含义记录一下 泛化 概念&#xff1a;泛化是一种一般与特殊、一般与具体之间关系的描述&#xff0c;具体描述建立在一般描述的基础之上&#xff0c;并对其进行了扩展。在java中用来表示继承的关系。 表示方法&#xff1a;用实线空心三角箭头表示。 实现 概念…

Postman中cookie的操作

在接口测试中&#xff0c;某些接口的调用&#xff0c;需要带入已有Cookie&#xff0c;比如有些接口需要登陆后才能访问。 Postman接口请求使用Cookie有如下两种方式&#xff1a; 1、直接在头域中添加Cookie头域&#xff0c;适用于已经知道请求所用Cookie数据的情况。 2、使用…

Vue3.0学习笔记

文章目录一. Vue开始1.1 渐进式框架1.2 单文件组件1.3 API 风格1.3.1 选项式 API1.3.2 组合式 API二. Vue基础2.1 创建一个 Vue 应用2.1.1 应用实例2.1.2 根组件2.1.3 挂载应用2.1.4 DOM 中的根组件模板2.1.5 应用配置2.1.6 多个应用实例2.2 模板语法2.2.1 文本插值2.2.2 原始 …