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

 更新时间:2022年08月05日 13:06:00   作者:自牧君  
我们知道从MySQL表中使用SQL SELECT语句来读取数据,下面这篇文章主要给大家介绍了关于MySQL如何对数据进行排序的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

一、 排序的基本使用

  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;

查询结果:

image-20220627191058102

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

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

查询结果:

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;

查询结果:

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;
  • 在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;

查询结果:

image-20220627195008915

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

总结

到此这篇关于MySQL如何对数据进行排序的文章就介绍到这了,更多相关MySQL数据排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux下源码安装mysql5.6.20教程

    linux下源码安装mysql5.6.20教程

    这篇文章主要为大家详细介绍了linux下源码安装mysql5.6.20教程的相关资料,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • windows 64位下mysql 8.0.13 安装配置方法图文教程

    windows 64位下mysql 8.0.13 安装配置方法图文教程

    这篇文章主要为大家详细介绍了windows 64位下mysql 8.0.13 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法

    工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意。读这篇文章,我假设读者有过写SQL语句的经历,或者能看得懂SQL语句
    2012-01-01
  • MySQL之范式的使用详解

    MySQL之范式的使用详解

    这篇文章主要介绍了MySQL之范式的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 开启MySQL远程连接的方法

    开启MySQL远程连接的方法

    这篇文章主要介绍了开启MySQL远程连接的方法,帮助大家更好的理解和学习MySQL数据库的使用,感兴趣的朋友可以了解下
    2020-12-12
  • 从创建数据库到存储过程与用户自定义函数的小感

    从创建数据库到存储过程与用户自定义函数的小感

    从创建数据库到存储过程与用户自定义函数的小感,深入的学习mysql
    2011-09-09
  • Mysql 存储过程中使用游标循环读取临时表

    Mysql 存储过程中使用游标循环读取临时表

    这篇文章主要介绍了Mysql 存储过程中使用游标循环读取临时表的方法,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • MySQL优化中B树索引知识点总结

    MySQL优化中B树索引知识点总结

    在本文里我们给大家整理了关于MySQL优化中B树索引的相关知识点内容,需要的朋友们可以学习下。
    2019-02-02
  • 详细介绍windows下MySQL安装教程

    详细介绍windows下MySQL安装教程

    这篇文章主要给大家介绍的是windows下MySQL安装教程,其实好多公司,数据库的面试题都是不可避免的,甚至一些前端工程师面试的时候都避免不了被询问到和数据库有关的一些问题。下面就从最基础的安装教程开始,需要的朋友可以参考一下
    2021-11-11
  • mysql中count(), group by, order by使用详解

    mysql中count(), group by, order by使用详解

    mysql中order by 排序查询、asc升序、desc降序,group by 分组查询、having 只能用于group by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group by 子句的查询语句需要使用聚合函数。
    2017-05-05

最新评论