排序

使用order by关键字, 基本格式:

1
2
select  ... from ... where condition order by colname|alias|expr|number(序号)
order by有两种排序方法; 一种是升序, 一种是降序: 默认是升序的(asc), 降序为desc

a 使用列名进行排序:

1 员工信息按入职日期先后排序

1
2
select * from emp order by hiredate asc;
select * from emp order by hiredate; --asc可以省略不写

2 员工薪水按从大到小排序

1
select * from emp order by sal desc;

3 查询员工信息按奖金逆序

1
2
3
4
select * from emp order by comm desc;
select * from emp order by comm desc nulls last;

注意: null值表现为无穷大, 可以使用nulls last来使null放在最后

4 员工信息按部门升序、薪水降序排列

1
2
3
4
select * from emp order by deptno, sal desc ;
根据排序结果得出结论:
asc和desc作用于最近的前面的一列
按照多个列进行排序的时候, 先按照第一列进行排序, 若第一列相同,则按照第二列排序

b 使用序号进行排序:(并说明什么序号)

1 查询员工编号, 员工姓名和工资, 按照序号(工资)进行排序

1
2
3
 select empno, ename, sal from emp order by 3;	 

序号: select后面出现的列的次序, 次序从1开始.

c 使用别名进行排序

1 按员工的年收入进行排序

1
select empno, ename, sal, sal*12+nvl(comm, 0) yearcomm from emp order by yearcomm;

d 使用表达式进行排序

1 按照员工的年薪进行排序

1
select empno, ename, sal, sal*12  from emp order by sal*12;

关于排序的几点说明:

1
2
3
4
1 要了解排序可以使用哪几种方式
列名 序号 别名 表达式
2 如果有多列进行排序, 应该如何排序, 可以结合案例理解.
若有多列进行排序, 优先按第1列进行排序, 如果第1列相同,再按照第2列进行排序.