MySQL如何对数据进行排序图文详解
作者:自牧君 发布时间:2024-01-16 09:55:47
一、 排序的基本使用
在查询数据时,如果没有使用排序操作,默认情况下SQL会按元组添加的顺序来排列查询结果。
在SQL中,使用关键字 ORDER BY... 来进行排序操作。在此关键字后面可以添加关键字 ASC (ascend) 表示升序排列 (从小到大) ,DESC (descend) 表示降序排列 (从大到小) 。
如果在 ORDER BY... 关键字后没有添加 ASC 或 DESC 来指明升序还是降序排列,SQL会默认按照升序 ASC 排列。如下代码所示:
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary;
查询结果:
【例子1】查询员工表 employees
中的员工的 employee_id
、last_name
、salary
和 department_id
信息。并按 salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;
查询结果:
二、 使用列的别名来排序
在SQL中,可以使用字段 (列) 的别名来进行排序。因为有时我们需要计算表中没有的字段 (如年薪 annual_salary
) ,或者有些字段名字实在是太长了,使用简短的别名可以提高我们编程的效率。如下例子所示:
【例子】查询员工表 employees
中的员工的 employee_id
、last_name
、月薪 salary
和 年薪 annual_salary
信息。并按 annual_salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary,
salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary"
FROM employees
ORDER BY annual_salary DESC;
查询结果:
【注意】
格式要求,
WHERE
必须声明在FROM
后。列的别名只能在
ORDER BY...
中使用,不能在WHERE
中使用。**如果在WHERE
中使用列的别名,SQL会报错。那为什么MySQL中列的别名不能在WHERE
中使用呢?原因如下:
【原因】
SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id IN(50, 60, 70)
ORDER BY department_id DESC;
在SQL中,查询语句不是按照上述代码从第1行到第4行从上往下执行的。而是首先执行第2行 FROM... ,先去找要查询的表。
再执行第3行 WHERE... ,去筛选符合条件的元组。
然后执行第1行 SELECT... ,显示你要查询的字段。在这一步才会生成列的别名,自然无法提供给上一步的 WHERE 来使用。但是可以提供给下一步的 ORDER BY 来使用。
最后才是第4行 ORDER BY... ,按某列排序。这个时候可以使用列的别名来进行排序。
查询结果:
三、 二级排序
在现实生活中,我们有时候希望先按某个字段排序,再按另一个字段排序。在SQL中我们可以使用二级排序来实现。使用方法请看下面例子:
【例子1】查询员工表 employees
中的员工的员工ID employee_id
、名字 last_name
、月薪 salary
和部门ID department_id
。并先按部门ID department_id
降序排列,再按 salary
从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY department_id DESC, salary DESC;
查询结果:
依次类推,可以在 ORDER BY
后面加逗号,来实现 * 、四级…排序。
来源:https://blog.csdn.net/Sihang_Xie/article/details/125490823


猜你喜欢
- 网上的关于django-scrapy的介绍比较少,该博客只在本人查资料的过程中学习的,如果不对之处,希望指出改正;以后的博客可能不会再出关于
- 本文实例为大家分享了wxPython整点报时的具体代码,供大家参考,具体内容如下# C盘要有个wav文件,内含报时音频import wx &
- 每次写完的东西就忘了,下次用时还要重查资料重新写,这是今天写的一段测试代码,保留下来,记录给自已,同时分享给大家。目标:把下边的这个上传文件
- 1.什么是Proxy?它的作用是?据阮一峰文章介绍:Proxy可以理解成,在目标对象之前架设一层 "拦截",当外界对该对
- 本文实例主要实现Python中的文件复制操作,有两种方法,具体实现代码如下所示:#coding:utf-8 # 方法1:使用read()和w
- PyTorch 1.0 同时面向产品化 AI 和突破性研究的发展,「我们在 PyTorch1.0 发布前解决了几大问题,包括可重用、性能、编
- 建立完回归模型后,还需要验证咱们建立的模型是否合适,换句话说,就是咱们建立的模型是否真的能代表现有的因变量与自变量关系,这个验证标准一般就选
- Python函数的定义定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具。定义函数需要用 def 关键字实现,具体的语法格式
- 记录一下微信支付整个流程1.公众号申请及配置流程使用微信支付的前提是必须要有公众号。 申请链接: 微信公众号申请.记得选择服务号,根据操作提
- 今天闲逛在网上时,看到一个11px大小的字体,显示却很清晰,赶紧查看站点的CSS,这字体称叫做:PMingLiu。效果相当不错,相比于我们使
- QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完
- 我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项
- parseInt()是内置的 JS 函数,用于解析数字字符串中的整数。 例如,解析数字字符串'100':const numb
- 本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下:用类作为装饰器示例一最初代码:class bol(object): d
- 目录一、 文件的操作1.1创建文件1.2写入数据1.3读数据1.4 2读数据1.5读写数据1.6删除文件1.7写入文件1.8读取图片1.9备
- python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without an
- 这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。 >>> r
- 安全性问题一直DBA是比较关心的问题,因为建立数据库的目的就是让相关的的客户端来进行访问,所以很难避免不出现安全隐患,例如客户端链接的权限、
- 在学习python代码时,看到有的类的方法中第一参数是cls,有的是self,经过了解得知,python并没有对类中方法的第一个参数名字做限
- 1、ThreadPoolExecutor多线程<1>为什么需要线程池呢?对于io密集型,提高执行的效率。线程的创建是需要消耗系统