1. 语法
SELECT
查询列表
FROM
表名
WHERE 筛选条件
ORDER BY 排序列表 [ ASC | DESC ] ;
2. 特点
asc代表升序,desc代表降序,如果不写的话默认为升序
order by子句支持单个字段,多个字段,表达式,函数,别名
order by子句一般是放在查询语句的最后面,limit子句除外
3. 实例
案例:查询员工信息,要求工资从高到低排序
SELECT
*
FROM
`employees`
ORDER BY `salary` DESC ;
案例:查询部门编号大于等于90的员工信息,要求按入职时间先后进行排序
SELECT
*
FROM
`employees`
WHERE `department_id` >= 90
ORDER BY `hiredate` ;
案例:【按表达式排序】查询员工信息,要求按照年薪高低排序
SELECT
*,
`salary` * 12 * (1+ IFNULL(`commission_pct`, 0)) AS '年薪'
FROM
`employees`
ORDER BY `salary` * 12 * (1+ IFNULL(`commission_pct`, 0)) DESC ;
案例:【按别名排序】查询员工信息,要求按照年薪高低排序
SELECT
*,
`salary` * 12 * (1+ IFNULL(`commission_pct`, 0)) AS '年薪'
FROM
`employees`
ORDER BY `年薪` DESC ;
案例:【按函数排序】查询员工的姓名和工资,要求按照姓名长度排序
SELECT
`last_name`,
`salary`,
LENGTH(`last_name`)
FROM
`employees`
ORDER BY LENGTH(`last_name`) DESC ;
案例:【按多个字段排序】查询员工信息,要求先按工资排序,再按员工编号排序
SELECT
*
FROM
`employees`
ORDER BY `salary` DESC,
`employee_id` DESC ;
案例:【按列位置排序】查询员工姓名和工资,要求按工资排序
--列位置是指select后的位置,从1开始,下面语句中不存在列位置为3
SELECT
`last_name`,
`salary`
FROM
`employees`
ORDER BY 2 DESC ;