zoukankan      html  css  js  c++  java
  • Oracle 排序中使用nulls first 或者nulls last 语法

    -原理

    Nulls first和nulls last是Oracle Order by支持的语法
    如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
    如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
    使用语法如下:
    --将nulls始终放在最前
    select * from zl_cbqc order by cb_ld nulls first
     
    --将nulls始终放在最后
    select * from zl_cbqc order by cb_ld desc nulls last
    --实例
    1.order by col  (asc/desc)  NULLS LAST 不管col如何排序 col的null(空值)总是在最后
    SQL> WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT *
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16   ORDER BY DEPT, ID NULLS LAST
     17  /
            ID NAME     DEPT
    ---------- -------- --------
             1 小明     开发中心
             2 小张     开发中心
             3 小王     开发中心
               开发中心 开发中心
             4 小丽     研发中心
               研发中心 研发中心
    已选择6行。
    2.order by col  (asc/desc)  NULLS first 不管col如何排序 col的null(空值) 总是在最前
    SQL> edi
    已写入 file afiedt.buf
      1  WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT *
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16*  ORDER BY DEPT, ID NULLS first
    SQL> /
            ID NAME     DEPT
    ---------- -------- --------
               开发中心 开发中心
             1 小明     开发中心
             2 小张     开发中心
             3 小王     开发中心
               研发中心 研发中心
             4 小丽     研发中心
    已选择6行。
    目的:
    本来的目的是把部门相同的人员归在一起
    SQL> edi
    已写入 file afiedt.buf
      1  WITH tab AS(
      2  SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual
      3  UNION ALL
      4  SELECT 2,'小张','开发中心' FROM dual
      5  UNION ALL
      6  SELECT 3,'小王','开发中心' FROM dual
      7  UNION ALL
      8  SELECT 4,'小丽','研发中心' FROM dual
      9  )
     10  SELECT id||name
     11    FROM (
     12          SELECT ID, NAME, DEPT FROM tab
     13          UNION ALL
     14          SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT
     15          )
     16*  ORDER BY DEPT, ID NULLS last
    SQL> /
    ID||NAME
    ------------------------------------------------
    1小明
    2小张
    3小王
    开发中心
    4小丽
    研发中心
    已选择6行。
     
  • 相关阅读:
    hdu4135(容斥原理求质数,队列实现)
    poj2559(单调栈)
    poj2796(单调栈)
    icpc2018焦作Transport Ship(背包思想)
    icpc2018焦作Mathematical Curse(动态规划)
    2018icpc徐州OnlineA Hard to prepare
    icpc2018徐州OnlineG-Trace(线段树)
    hdu3499(分层图最短路 or 反向建图)
    MINE
    数论(Mathmatics)总结[1]
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/8525058.html
Copyright © 2011-2022 走看看