【MySQL】查询数据,对结果进行排序(关键字:ORDER BY)

文章目录

  • 单列排序
  • 多列排序
  • 指定排序方式,升序(ASC,ASCENDING) / 降序(DESC,DESCENDING)
  • `ORDER BY` 关键字与 `LIMIT` 关键字联用

我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


我们有个学生表,里面有10个学生数据。

SELECT idx_student_name FROM student;

查询结果:

+ ---------------- +
| idx_student_name |
+ ---------------- +
|            范晓明 |
|            刘秀英 |
|              黎璐 |
|            苏云熙 |
|              雷睿 |
|              方睿 |
|            严震南 |
|              沈璐 |
|              刘岚 |
|            严宇宁 |
+ ---------------- +

通常我们直接查询出来的数据顺序是数据的插入顺序,所以并不一定是我们想要的顺序。


单列排序

我们要让数据按我们希望的方式,就需要使用到 ORDER BY 关键字。

# 格式。
SELECT 列名 FROM 表名 ORDER BY 要排序的列名;

我们查询 idx_student_name 字段 从 学生表,并且让结果按照 idx_student_name 字段进行排序。

SELECT idx_student_name FROM student ORDER BY idx_student_name;

使用 ORDER BY 关键字,查询结果:

+ ---------------- +
| idx_student_name |
+ ---------------- +
|            严宇宁 |
|            严震南 |
|              刘岚 |
|            刘秀英 |
|              方睿 |
|              沈璐 |
|            苏云熙 |
|            范晓明 |
|              雷睿 |
|              黎璐 |
+ ---------------- +

多列排序

如果我们想让学生先按入学日期、再按班级排序,最后同一个班里的同学再按姓名排序,怎么处理?

SELECT
	uk_student_number, admission_date, class_number, idx_student_name
FROM
	student
ORDER BY
	admission_date, class_number, idx_student_name;

查询结果:

+ ----------------- + -------------- + ----------- + ---------------- +
| uk_student_number | admission_date | class_number| idx_student_name |
+ ----------------- + -------------- + ----------- + ---------------- +
|             89480 |     2023-09-01 |        1991 |            严宇宁 |
|             21666 |     2023-09-01 |        1991 |            严震南 |
|             39917 |     2023-09-01 |        2582 |              刘岚 |
|             17117 |     2023-09-01 |        2582 |            刘秀英 |
|             46573 |     2023-09-01 |        2582 |              黎璐 |
|             52626 |     2023-09-01 |        5075 |              沈璐 |
|             28909 |     2023-09-01 |        5436 |              方睿 |
|             41955 |     2023-09-01 |        5436 |            范晓明 |
|             48262 |     2023-09-01 |        5436 |              雷睿 |
|             60631 |     2023-09-01 |        5441 |            苏云熙 |
+ ----------------- + -------------- + ----------- + ---------------- +

我们可以很清晰的看见:

  • 学生号是乱序的,所以学生号没有影响排列。
  • 先筛选了同一天入学的数据。
  • 然后再按同一个班级的排序。
  • 最后同一个班级的再按名称排序。

小结:
ORDER BY 后面接多个字段,字段的顺序就是排序的顺序。

ORDER BY1,2,3;
  • 先按列1排序。
  • 同一列1里面,再按列2排序。
  • 同一列1,列2,里面,再按列3排序。

指定排序方式,升序(ASC,ASCENDING) / 降序(DESC,DESCENDING)

  • 不指定列的排序方式,默认是升序ASC。
  • 降序排序需要在列名后标出DESC(升序不标默认也是升序,所以重点关注降序即可)。
  • 降序标一列DESC,此一列按降序排列;标两列DESC,此两列按降序排列;没有标的列,仍然默认按升序排列。

我们将 idx_student_name 字段单独加上DESC,现在的逻辑变成:

  • 先依次按入学日期(admission_date)、班级(class_number )字段升序排列。
  • 最后同一个班级的数据,按名(idx_student_name)称倒序排列。
SELECT
	uk_student_number, admission_date, class_number, idx_student_name
FROM
	student
ORDER BY
	admission_date, class_number, idx_student_name DESC;

查询结果:

+ ----------------- + -------------- + ----------- + ---------------- +
| uk_student_number | admission_date | class_number| idx_student_name |
+ ----------------- + -------------- + ----------- + ---------------- +
|             21666 |     2023-09-01 |        1991 |            严震南 |
|             89480 |     2023-09-01 |        1991 |            严宇宁 |
|             46573 |     2023-09-01 |        2582 |              黎璐 |
|             17117 |     2023-09-01 |        2582 |            刘秀英 |
|             39917 |     2023-09-01 |        2582 |              刘岚 |
|             52626 |     2023-09-01 |        5075 |              沈璐 |
|             41955 |     2023-09-01 |        5436 |            范晓明 |
|             48262 |     2023-09-01 |        5436 |              雷睿 |
|             28909 |     2023-09-01 |        5436 |              方睿 |
|             60631 |     2023-09-01 |        5441 |            苏云熙 |
+ ----------------- + -------------- + ----------- + ---------------- +

排序区分大小写问题:

  • 这个主要看数据库和表的编码方式上有没有区分大小写。
  • 例如我这里使用的测试数据 utf8mb4_0900_ai_ci 的编码方式,就是不区分大小写的。
  • _ci 表示不区分大小写(ci = case insensitive)。
  • _cs 表示区分大小写(cs = case sensitive)。

ORDER BY 关键字与 LIMIT 关键字联用

我们使用 ORDER BYLIMIT 联用,可以很方便的实现,班级按成绩排名。(假设只有一个班级,仅演示当前功能,不牵涉过多搜索关键字)

  • 查询学号、姓名、成绩、从学生表搜索,根据成绩升序(默认升序,从小到大) 排列,倒数前五名。
    • 默认升序从小到大,对应成绩就是从低到高,即:倒数前五名。
    # 默认升序从小到到,对应成绩就是从低到高,即:倒数前五名。
    SELECT
    	uk_student_number, idx_student_name, score 
    FROM
    	student
    ORDER BY
        score 
    LIMIT 5;
    
  • 查询学号、姓名、成绩、从学生表搜索,根据成绩降序(从大到小) 排列,正数前五名。
    • 降序从大到小,对应成绩就是从高到低,即:正数前五名。
    # 降序从大到小,对应成绩就是从高到低,即:正数前五名。
    SELECT
    	uk_student_number, idx_student_name, score 
    FROM
    	student
    ORDER BY
        score DESC
    LIMIT 5;
    

注意:
LIMITORDER BY 联用。LIMIT 关键字必须位于 ORDER BY 关键字之后。否则会提示语法错误,执行失败。

在这里插入图片描述


我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue项目中引入高德地图步骤详解,附示例代码

vue中如何使用高德地图,下面为您详解。 步骤一:安装高德地图的JavaScript API 在Vue项目的根目录下打开终端,执行以下命令安装高德地图的JavaScript API: npm install amap/amap-jsapi-loader --save 步骤二:创建地…

【数据结构6--图】

目录 1 图2 图的定义和基本概念(在简单图范围内)3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

2726641 - Failed to resolve Object Based Navigation target

服务和支持/知识库文章和注释/人事管理/人员发展/目标设置和评估 (PA-PD-PM) 2726641 - 未能解析基于对象的导航目标 SAP Knowledge Base Article, Version: 1, 审批日期: 30.11.2018 组件PA-PD-PM对象状态 优先级正常对象状态 类别问题对象状态 审批状态已发布至客户对象…

Window + Ubuntu 双系统无Ubuntu Bios 启动项

文章目录 安装硬盘位置不重要!!!(但是我安装在了第二张HDD)问题是多盘分位置会导致磁盘主分区变成了简单卷 Bios Ubuntu 启动项修复参考Ubuntu安装U盘进入Try Ubuntu 使用Terminal修复完提示Disable Secure Boot进入Te…

minikube 环境搭建

minikube安装 # 查看linux 架构模式x86_64、arm64 uname -m # Intel x86_64 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64# Apple arm64 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/min…

利用ENVI SPEAR工具和WV-2卫星影像数据量测水深

ENVI的SPEAR工具集((Spectral Processing Exploitation and Analysis Resource))是将很多的遥感图像处理过程集成为流程化的操作方式,使得遥感图像处理知识相对薄弱的非专业人员也能利用流程化的工具进行图像处理,图像处理速度也有…

虚拟DOM

虚拟DOM(Virtual DOM)是现代前端框架(如React、Vue等)用于优化DOM操作性能的关键技术。Vue也采用了虚拟DOM来提高性能和提供更好的开发体验。以下是虚拟DOM在Vue中的详细解释: 什么是虚拟DOM? 虚拟DOM是一…

【经典算法】LeetCode104二叉树的最大深度(Java/C/Python3实现含注释说明,Easy)

目录 题目描述思路及实现方式一:递归思路代码实现Java版本C语言版本Python3版本Go语言版本 复杂度分析 方式二:广度优先搜索(BFS)思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相似题目 标签(题目类型):树、深度优先搜索(DFS)、…

使用iar embedded workbench编译器打开CC2640R2代码工程

使用iar embedded workbench编译器打开CC2640R2代码工程 首先安装CC2640R2的SDK包 目前使用的SDK版本是 simplelink_cc2640r2_sdk_4_20_00_04 在德州仪器(TI)官网下载 https://www.ti.com.cn/product/cn/CC2640R2F-Q1 下载后需要对SDK进行安装,安装很方便&#…

Java中的Set集合和Hash值和TreeSet的使用

Set集合的特点 不包含重复元素的集合 没有带索引的方法,所以不能使用普通for循环遍历 HashSet对集合的迭代顺序不作任何保证 Set集合的遍历 有两种方式遍历一种是迭代器一种是增强for package dayhou40.day49; ​ import java.util.HashSet; import java.util…

C语言程序设计基础(跟知乎学)

1、C语言是一种结构化程序设计语言。三种基本结构:顺序、选择、循环。 2、在C语言中,程序的模块化是利用函数实现的。 3、计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机…

C++ | Leetcode C++题解之第51题N皇后

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<string>> solveNQueens(int n) {auto solutions vector<vector<string>>();auto queens vector<int>(n, -1);auto columns unordered_set<int>();auto diag…

Error: The project seems to require yarn but it‘s not installed.

在使用yarn serve启动vue2项目是发生报错信息 报错信息&#xff1a; 解决方法&#xff1a; 1、 红色箭头行&#xff0c;ctrl单击 进入env.js文件 2、注释行 if (result && !exports.hasYarn()) throw new Error(The project seems to require yarn but its not ins…

Oracle VM virtual Box 安装虚拟机并网络连接宿主机且能ping通外网

新建虚拟机 参考镜像下载连接&#xff1a;支持centos7.8及其以上版本&#xff1a;​ ​http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iosOracle VM virtual Box新建虚拟机&#xff0c;按照下图所示新建虚拟机&#xff1a; 1.新建虚拟机 2.配…

IDEA安装插件Apipost方便调试

进入IDEA的File->sttings->plugins 进入搜索Apipost即可安装插件 使用小箭头即可得到URL&#xff0c;点击进入操作即可

C# Onnx yolov8 pig detection

C# Onnx yolov8 pig detection 目录 效果 项目 模型 代码 数据集 下载 效果 项目 模型 Model Properties ------------------------- date&#xff1a;2024-04-28T15:13:10.750689 description&#xff1a;Ultralytics YOLOv8n model trained on C:\Work\yolov8\datas…

深入探索计算机视觉:高级主题与前沿应用的全面解析

引言 计算机视觉&#xff0c;作为人工智能领域的一个重要分支&#xff0c;旨在让计算机能够“看”懂世界&#xff0c;理解和解释视觉场景。随着深度学习技术的迅猛发展&#xff0c;计算机视觉已经在许多领域取得了显著的进展&#xff0c;如自动驾驶、安防监控、医疗诊断等。在…

NodeJs[黑马笔记简洁版]

是什么 怎么用 模块 模块化标准 CommonJs(标准语法)默认 ECMAscript 内置模块 fs模块 path模块 http模块 自定义模块 第三方包 包概念 npm 包管理器 总结

正点原子[第二期]ARM(I.MX6U)裸机篇学习笔记-1.2

前言&#xff1a; 本文是来自哔哩哔哩网站上视频“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”的学习笔记&#xff0c;在这里会记录下正点原子Linux ARM MX6ULL 开发板根据配套的哔哩哔哩学习视频所作的实验和笔记内容。本文大量的引用了正点原子哔哔哩网…

【C++】二叉树的进阶

二叉树的进阶 二叉搜索树概念操作实现创建树形结构拷贝构造函数构造函数析构函数赋值运算符重载循环版本查找插入删除 递归版本查找插入删除 应用K模型KV模型性能分析 二叉树进阶面试题二叉树创建字符串二叉树的分层遍历I最近公共祖先二叉搜索树与双向链表前序遍历与中序遍历构…
最新文章