MySQL如何对数据进行排序图文详解

作者:自牧君 时间:2024-01-16 09:55:47 

一、 排序的基本使用

  1. 在查询数据时,如果没有使用排序操作,默认情况下SQL会按元组添加的顺序来排列查询结果。

  2. 在SQL中,使用关键字 ORDER BY... 来进行排序操作。在此关键字后面可以添加关键字 ASC (ascend) 表示升序排列 (从小到大) ,DESC (descend) 表示降序排列 (从大到小) 。

  3. 如果在 ORDER BY... 关键字后没有添加 ASC 或 DESC 来指明升序还是降序排列,SQL会默认按照升序 ASC 排列。如下代码所示:

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

查询结果:

MySQL如何对数据进行排序图文详解

【例子1】查询员工表 employees 中的员工的 employee_idlast_namesalarydepartment_id 信息。并按 salary 从大到小 (降序) 进行排列。

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

查询结果:

MySQL如何对数据进行排序图文详解

二、 使用列的别名来排序

在SQL中,可以使用字段 (列) 的别名来进行排序。因为有时我们需要计算表中没有的字段 (如年薪 annual_salary ) ,或者有些字段名字实在是太长了,使用简短的别名可以提高我们编程的效率。如下例子所示:

【例子】查询员工表 employees 中的员工的 employee_idlast_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;

查询结果:

MySQL如何对数据进行排序图文详解

【注意】

  • 格式要求,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... ,按某列排序。这个时候可以使用列的别名来进行排序。

查询结果:

MySQL如何对数据进行排序图文详解

三、 二级排序

在现实生活中,我们有时候希望先按某个字段排序,再按另一个字段排序。在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;

查询结果:

MySQL如何对数据进行排序图文详解

依次类推,可以在 ORDER BY 后面加逗号,来实现 * 、四级…排序。

来源:https://blog.csdn.net/Sihang_Xie/article/details/125490823

标签:mysql,数据,排序
0
投稿

猜你喜欢

  • 100%点击区的滑动门

    2007-06-14 22:00:00
  • Pycharm学生免费专业版安装教程的方法步骤

    2022-01-11 14:39:30
  • SQL Server索引管理的六大铁律

    2009-03-25 14:05:00
  • Django实现发送邮件功能

    2021-05-13 10:25:44
  • 详解如何在cmd命令窗口中搭建简单的python开发环境

    2021-08-21 08:03:08
  • mysql索引失效的五种情况分析

    2024-01-24 16:27:22
  • python Django里CSRF 对应策略详解

    2021-02-15 20:36:19
  • Echarts实现单条折线可拖拽效果

    2024-04-10 13:59:17
  • vue指令之表单控件绑定v-model v-model与v-bind结合使用

    2023-07-02 16:28:15
  • JavaScript设计模式---单例模式详解【四种基本形式】

    2024-05-05 09:05:21
  • 在Django model中设置多个字段联合唯一约束的实例

    2021-02-09 22:04:59
  • Python3.6实现连接mysql或mariadb的方法分析

    2024-01-26 19:46:36
  • 在ADF中跟踪SQL执行时间实现代码

    2024-01-16 16:09:00
  • js增强的自定义事件模型

    2008-02-18 12:37:00
  • pycharm安装图文教程

    2022-01-14 08:43:42
  • Python函数中的作用域规则详解

    2023-02-14 04:32:28
  • 解决torch.autograd.backward中的参数问题

    2023-11-19 13:16:50
  • numpy中loadtxt 的用法详解

    2022-03-21 09:46:39
  • java使用mysql预编译语句查询优势及示例详解

    2024-01-13 21:15:00
  • Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

    2023-04-27 19:46:34
  • asp之家 网络编程 m.aspxhome.com