一、 排序的基本使用
- 在查询数据时,如果没有使用排序操作,默许情况下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
后面加逗号,来实现三级、四级…排序。
总结
到此这篇关于MySQL如何对数据进行排序的文章就介绍到这了,更多相关MySQL数据排序内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!
文章来源:丸子建站
文章标题:MySQL如何对数据进行排序图文详解
https://www.wanzijz.com/view/57155.html