排序查询
它的语法格式
SELECT <列名1>,<列名2>,...<列明N> FROM <表名> WHERE <筛选条件> ORDER BY <列名|表达式> <ASC/DSC>
其中
- ASC表示升序排列,DSC表示降序排列,若没有指定ASC或DSC默认是升序排列。
- ORDER BY子句支持多个表达式、字段,或它们的别名多重排序。
按列明排序
示例1:我需要按入职日期查询降序排列的形式查询人员数据。
SELECT
emp_no '工号',
first_name '名字',
gender '性别',
hire_date '入职日期'
FROM employees
ORDER BY hire_date DESC;
输出效果
示例2:
查询工号位于20000到20050之间的人员信息,并且先按工号升序排列,其次按入职日期降序排列。
SELECT
emp_no '工号',
first_name '名字',
gender '性别',
hire_date '入职日期'
FROM employees
WHERE
emp_no >20000 AND emp_no <20050
ORDER BY emp_no ASC,hire_date DESC;
按表达式排序
例如:扩充上面的示例,查找工号位于20000到20050之间的人员信息,并且按年薪降序排列
SELECT
emp_no '工号',
from_date '入职日期',
salary '月薪',
salary*(1+0.25)*12 '年薪'
FROM salaries
WHERE
emp_no >20000 AND emp_no <20050
ORDER BY salary*(1+0.25)*12 DESC;
值得一提的是ORDER BY 子句支持表达式、字段名的别名,因此上面查询可以简化为
SELECT
emp_no '工号',
from_date '入职日期',
salary '月薪',
salary*(1+0.25)*12 '年薪'
FROM salaries
WHERE
emp_no >20000 AND emp_no <20050
ORDER BY '年薪' DESC;
输出效果
下一篇待续....