《第二章:查询结果排序》
1:以指定的次序返回查询结果
条件:显示部门10中员工名字,职位和工资并按照工资升序排列:升序asc 降序desc
SELECT ename,job,sal FROM emp WHERE deptno='10' ORDER BY sal asc;
2:按照多个字段排序
表中按照DEPTNO的升序排列然后按照工资降序排列;
SELECT empno,deptno,sal,ename,job FROM emp ORDER BY deptno,sal DESC;
3:按照子串排序
按照字符串的某一部分对查询结果排序,从EMP表中返回员工名字和职位,并且按照职位字段最后两个字符排序
SELECT ename,job FROM emp ORDER BY SUBSTR(job,LENGTH(job)-2);
4:对字母数字混合的数据排序
现有字母数字混合的数据,按照数字或字符部分排序
CREATE view V AS SELECT ename||''||deptno AS data from emp select * from V
5:处理排序空值
EMP中根据comm排序结果但是这个字段可以为空值需要指定是否将空值排序在最后
SELECT ename,sal,comm FROM emp ORDER BY 3; (还可以根据升序,降序进行排序)
6:根据数据项键排序
根据某些条件逻辑排序,列如Job是TES根据comm来排序,否则根据SAL排序;
在ORDER BY子句中使用CASE表达式:
SELECT ename,sal,job,comm FROM emp ORDER BY CASE WHEN job='TAB' THEN comm ELSE sal END
使用CASE表达式来动态改变如何对结果排序,传递给ORDER BY的值类似这样
SELECT ename,sal,job,comm, CASE WHEN job='TAB' THEN comm ELSE sal END AS ORDERED FROM emp ORDER BY 5