zoukankan      html  css  js  c++  java
  • 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做排序
  • 相关阅读:
    HDU1258 Sum It Up(DFS)
    hdu 1078 FatMouse and Cheese(记忆化搜索)
    HDU1072 Nightmare (bfs+贪心)
    HDU 2102 A计划 经典搜索
    hdu 1180诡异的楼梯(bfs)
    HDU 1065.I Think I Need a Houseboat
    559_N叉树的最大深度
    236_二叉树的最近公共祖先
    589_N叉树的前序遍历
    每天进步一点点
  • 原文地址:https://www.cnblogs.com/weixiaole/p/4241806.html
Copyright © 2011-2022 走看看