查询结果排序
在执行查询操作时,默认情况下查询结果无序排列。这种无需的显示非常不方便查看 为了更直观的显示数据结果,经常需要对数据按一定规则进行排序操作。查询结果排序 的功能由ORDER BY子句实现,语法如下:
SELECT <*,COLUM[ALIAS],...> FROM TABLE [WHERE condition(s)] [ORDER BY column [ASC | DESC]];
在上述语法中,ORDER BY子句用来指定排序列,ASC用来指定升序排序(默认选项),DESC 用来指定降序排序。注意ORDER BY子句必须出现在SELECT中的最后一个子句
-
升序排序
> 在SELECT中使用 ORDER BY子句指定了拍序列,默认情况下数据是按升序排列的,也就是说,可以指定ASC关键字指定升序排列,如果不指定,默认就是升序,显示效果是 一样的。 --例1:测试查询结果按升序排列 SELECT ENAME,SAL FROM SCOTT.EMP ORDER BY SAL; 结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/6.png) **值得注意的一点是,如果子啊排序的列中有NULL值,则NULL值会显示在最后,NULL值被认为是最大** --例2:测试查询结果升序排列,排序列中有NULL值 SELECT EMPNO,ENAME,MGR FROM SCOTT.EMP WHERE DEPTNO = 10 ORDER BY MGR; 结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/7.png)
-
降序排序
> 当希望查询结果降序排列是,必须在排序后制定DESC关键字。 --例3: 测试查询结果按降序排列 SELECT ENAME,SAL FROM SCOTT.EMP ORDER BY SAL DESC; 结果为: ![测试查询结果按降序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/8.png) **和上述升序排列相思,如果排序列存在NULL值,那么有NULL值的行会显示在最前面**
-
使用非选择列表排序
--例4: 使用非选择排序 SELECT ENAME FROM SCOTT.EMP ORDER BY SAL DESC ; 结果为: ![使用非选择排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/9.png)
-
使用表达式排序
> 在SELECT的列中可以出现算数表达式,排序时可以使用表达式来按照表达式 的计算结果来排序的目的 --例5: 使用表达式排序 SELECT ENAME,SAL,SAL * 12 FROM SCOTT.EMP ORDER BY SAL * 12 DESC ; 结果为: ![使用表达式排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/10.png)
-
使用列别名排序
> 在做SELECT查询是,可以为表的列或表达式定义别名。 在执行排序操作时,可以使用列的别名进行排序。 --例6: 使用列的别名排序 SELECT ENAME,SAL * 12 ANNUAL_SALARY FROM SCOTT.EMP ORDER BY ANNUAL_SALARY DESC ; 结果为: ![使用列的别名排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/11.png)
-
使用列位置排序
> Oracle可以按照列或表达式在SELECT列表中的位置进行排序,可以有效的缩减排序语句的长度。另外在使用UNION这类的集合 操作符时,如果SELECT列表的列名不同,此时必须使用列表达式 排序。 --例7: 使用列的位置排序 --查询部门表和职员表,列出所有部门编码和部门名字,以及所有的 --职工编码和职工名字,并以部门编码和职工编码作为升序排列的标准 SELECT DEPTNO,DNAME FROM SCOTT.DEPT UNION SELECT EMPNO,ENAME FROM SCOTT.EMP ORDER BY 1; 结果为: ![使用列的位置排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/12.png)
-
使用多列排序
> 在执行操作时,不仅可以按照单列进行排序,还可以根据多列排序。当以多列 作为排序的标准时,首先按照第一列进行排序,如果第一列数据相同,再以第二列 排序,以此类推。 需要注意的是,多列排序是,不管正序还是倒序,每个列需要单独的设置排序方式。 --例8: 使用多列排序 --对职员表中的职员排序,先按照部门编码正序排列,再按照薪水降序排列 SELECT ENAME,DEPTNO,SAL FROM SCOTT.EMP ORDER BY DEPTNO ASC,SAL DESC ; 结果为: ![使用多列排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/13.png)原文链接:https://www.f2er.com/oracle/211986.html