• 【MySQL】MySQL中如何对数据进行排序


    MySQL中的数据排序

    一、 排序的基本使用

    • 在查询数据时,如果没有使用排序操作,默认情况下SQL会按元组添加的顺序来排列查询结果。
    • 在SQL中,使用关键字 ORDER BY... 来进行排序操作。在此关键字后面可以添加关键字 ASC (ascend) 表示升序排列 (从小到大) ,DESC (descend) 表示降序排列 (从大到小) 。
    • 如果在 ORDER BY... 关键字后没有添加 ASCDESC 来指明升序还是降序排列,SQL会默认按照升序 ASC 排列。如下代码所示:
    SELECT employee_id, last_name, salary
    FROM employees
    ORDER BY salary;
    
    • 1
    • 2
    • 3

    查询结果:

    image-20220627191058102

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

    SELECT employee_id, last_name, salary
    FROM employees
    ORDER BY salary DESC;
    
    • 1
    • 2
    • 3

    查询结果:

    image-20220627190650878

    二、 使用列的别名来排序

    • 在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;
    
    • 1
    • 2
    • 3
    • 4

    查询结果:

    image-20220627192103867

    【注意】

    • 格式要求,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;
    
    • 1
    • 2
    • 3
    • 4
    • 在SQL中,查询语句不是按照上述代码从第1行到第4行从上往下执行的。而是首先执行第2行 FROM... ,先去找要查询的表。
    • 再执行第3行 WHERE... ,去筛选符合条件的元组。
    • 然后执行第1行 SELECT... ,显示你要查询的字段。在这一步才会生成列的别名,自然无法提供给上一步的 WHERE 来使用。但是可以提供给下一步的 ORDER BY 来使用。
    • 最后才是第4行 ORDER BY... ,按某列排序。这个时候可以使用列的别名来进行排序。

    查询结果:

    image-20220627192932393

    三、 二级排序

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

    查询结果:

    image-20220627195008915

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

  • 相关阅读:
    iOS NSKeyedUnarchiver归档和读取
    (未完待续)【Netty专题】Netty实战与核心组件详解
    相机不小心格式化了怎么恢复?如何快速找回珍贵照片
    uniapp uview 头像裁剪组件的问题
    NEFU数字图像处理(5)图像压缩编码
    浅谈Python中列表元素的修改以及列表的统计与排序
    我在高职教STM32——GPIO入门之按键输入(2)
    http库requests
    紫光同创PG2L100H关键特性评估板,盘古100K开发板,可实现复杂项目的开发
    认识和使用日志工具Loki
  • 原文地址:https://blog.csdn.net/Sihang_Xie/article/details/125490823