对查询的结果进行排序,会用到 order by 子句。

语法:

  1. SELECT
  2. <字段>
  3. FROM
  4. <表名>
  5. WHERE
  6. <筛选条件>
  7. ORDER BY
  8. <排序条件>;

asc:按升序排列(默认 )。
desc:按降序排序。

执行顺序:

from —-> where —-> select —-> order by

因为 order by 子句 在 select 子句之后执行,所以可以使用 select 子句中字段的别名来作为排序字段。

单个字段排序

如:

  1. # 查询部门编号 >= 90 的员工信息,按入职时间的先后进行排序。
  2. SELECT
  3. *
  4. FROM
  5. employees
  6. WHERE
  7. department_id >= 90
  8. ORDER BY
  9. hiredate DESC;
  10. # 查询员工的信息和年薪,按年薪排序(顺序)。
  11. SELECT
  12. *,
  13. salary * 12 * (
  14. 1+IFNULL ( commission_pct, 0 )) AS 'totalSalary'
  15. FROM
  16. employees
  17. ORDER BY
  18. totalSalary;
  19. # 按员工的长度显示员工的姓名和工资。
  20. SELECT
  21. LENGTH( last_name ),
  22. last_name,
  23. salary
  24. FROM
  25. employees
  26. ORDER BY

多个字段排序

有时单个字段排序不能满足需求,可以使用多个字段排序,各个字段之间用 , 隔开。

如:

  1. # 查询员工信息,要求先按工资排序(升序),再按员工编号排序(降序)。
  2. SELECT
  3. *
  4. FROM
  5. employees
  6. ORDER BY
  7. salary ASC,
  8. employee_id DESC;