SQL.Cookbook 读书笔记2 查询结果排序
第二章 查询结果排序
2.1 按查询字段排序
select ename,job,sal from emp where deptno = 10 order by sal asc;
select ename,job,sal from emp order by deptno, 3 desc;-- 3表示sal
2.2 按子串查询
select ename,job from emp order by substring(job,length(job)-2);--按job的最后两个字符排序
2.3 对字符数字混合排序
create view v as select ename ||' ' ||deptno as data from emp;--创建视图 select * from v;
创建视图后把两个字段链接成一个字符串 利用translate()函数把数字或者字符替换 然后排序
select data from v order by replace(replace(translate(data,'0123456789','##########'),'#',' '),' ') -- 按数字排序 把字符替换成 ' '
select data from v order by replace(translate(data,'0123456789','##########'),'#',' ') -- 按字符排序 把数字替换成 ' '
2.4NULL 值排序问题
NULL在排序的时候是无限大的 但想要在降序排序中将NULL放在后面 就使用case控制
MYSQL
select ename,sal,comm from (select ename,sal,comm,case when comm is null then 0 else 1 end as is_null from emp) x order by is_null desc,comm desc;-- 降序null 放在最后
ORACLE
select ename,sal,comm from emp order by comm nulls last;-- nulls first
2.5 根据数据项的键排序
select ename,sal,job,comm,case when job='SALESMAN' then comm else sal end as ordered from emp order by 5;-- 把SALESMAN的comm值拿到和sal做排序
posted on 2015-01-22 15:28 weiguoyuan 阅读(222) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步