最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL对数据进行排序代码解析
时间:2022-08-05 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下MySQL对数据进行排序代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
一、 排序的基本使用
在查询数据时,如果没有使用排序操作,默认情况下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中的员工的员工IDemployee_id、名字last_name、月薪salary和部门IDdepartment_id。并先按部门IDdepartment_id降序排列,再按salary从大到小 (降序) 进行排列。
SELECT employee_id, last_name, salary, department_id FROM employees ORDER BY department_id DESC, salary DESC;
查询结果:
依次类推,可以在ORDER BY后面加逗号,来实现三级、四级…排序。
-
上一个: MySQL自定义函数及触发器代码示例
相关文章
- MySQL登录、访问及退出操作解析 10-18
- sql语句 update字段null不能用is null问题解析 09-28
- SQL Server ISNULL 不生效原因及解决分析 09-28
- 关于if exists的用法及说明分析 09-28
- Mysql删除某个字段的最后四个字符 09-26
- mysql多个字段最大最小值介绍 09-26