在oracle数据库中想要对查询道的数据集先排序在输出出来怎么实现?
语法:在select语句的最后加上一行 ORDER BY {列名|表达式|列别名|列序号} [ASC|DESC] 即orderby语句必定是跟着符号 ; 的,它只能对最终的查询结果进行排序,例如嵌套查询中的子查询就不可以使用。
如select * from student where studentID BETWEEN 2016 AND 2019 ORDER BY studentID DESC;
上面的语句的意思是按studentID的大小的降序排序输出。
按什么排序
其中按什么排序有by后面跟着的列名来定义,by后面可以跟着一个列名,也可以跟着多个列名。
①按列名:
SQL> SELECT ename, job, deptno, hiredate FROM emp ORDER BY hiredate;
②按列别名
SELECT empno, ename, sal*12 annsal FROM emp ORDER BY annsal;
③按列号
SELECT ename, deptno, sal FROM emp ORDER BY 2, 3 DESC;
按照选择列的第二列的deptno升序排序后,按照第三列sal降序排序
怎么排序
其中排序有两种:
①升序ASC(假如orderby语句不设置排序规则的话,就会采用默认排序规则ASC)
这种排序规则就是按照数值从小到大排序输出,其中Oracle认为空值NULL在数值上为最大,所以默认被排在最后,当然也可以在orderby语句最后加上 null first 把空值排到前面。(相比而言sqlserver 认为 null 最小)
②降序DESC
这种排序规则就是按照数值从大到小排序输出,其中字符的话就按照字符的ascll值大小排序,即先排A-Z,再派a-z