【SQL】NULLS FIRST的作用
来源:互联网 发布:数据库的服务器名称 编辑:程序博客网 时间:2024/06/01 11:37
在按列排序的时候,我们常常忽略空值(null)的影响。
如,我们需要提取奖金最少的前3个员工,将其奖金增加1000,很可能开发人员是这样写的sql:
SQL> select empno,ename,comm,comm+1000 as new_comm from (select empno,ename,comm from emp order by comm asc) where rownum <= 3;
EMPNO ENAME COMM NEW_COMM
---------- ---------- ---------- ----------
7844 TURNER 0 1000
7499 ALLEN 300 1300
7521 WARD 500 1500
SQL>
很明显,这次奖金的调整,幸运地落地到7844和7499以及7521身上。但其实,我们看看奖金最低是他们吗?
SQL> select empno,ename,comm from emp where comm is null;
EMPNO ENAME COMM
---------- ---------- ----------
7369 SMITH
7566 JONES
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
已选择10行。
SQL>
我们认为这部分员工奖金还没有设置,也就是无奖金。所以这次奖金的调整应该首先惠及到他们。
那么,为什么会出现这样的结果?
其实是因为,在数据库中,排序时,null按照最大来处理(无穷大)。
SQL> select empno,ename,comm from emp order by comm asc;
EMPNO ENAME COMM
---------- ---------- ----------
7844 TURNER 0
7499 ALLEN 300
7521 WARD 500
7654 MARTIN 1400
7788 SCOTT
7839 KING
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
7698 BLAKE
7566 JONES
7369 SMITH
7782 CLARK
已选择14行。
SQL> select empno,ename,comm from emp order by comm desc;
EMPNO ENAME COMM
---------- ---------- ----------
7369 SMITH
7782 CLARK
7902 FORD
7900 JAMES
7876 ADAMS
7566 JONES
7698 BLAKE
7934 MILLER
7788 SCOTT
7839 KING
7654 MARTIN 1400
7521 WARD 500
7499 ALLEN 300
7844 TURNER 0
已选择14行。
SQL>
我们可以通过 NULLS FIRST来改变:
SQL> select empno,ename,comm from emp order by comm asc NULLS FIRST;
EMPNO ENAME COMM
---------- ---------- ----------
7369 SMITH
7782 CLARK
7902 FORD
7900 JAMES
7876 ADAMS
7566 JONES
7698 BLAKE
7934 MILLER
7788 SCOTT
7839 KING
7844 TURNER 0
7499 ALLEN 300
7521 WARD 500
7654 MARTIN 1400
已选择14行。
SQL> select empno,ename,comm from emp order by comm desc NULLS LAST;
EMPNO ENAME COMM
---------- ---------- ----------
7654 MARTIN 1400
7521 WARD 500
7499 ALLEN 300
7844 TURNER 0
7788 SCOTT
7839 KING
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
7698 BLAKE
7566 JONES
7369 SMITH
7782 CLARK
已选择14行。
SQL>
- 【SQL】NULLS FIRST的作用
- nulls first / nulls last
- Oracle的 Order by支持Nulls first和Nulls last
- Mysql --nulls first(last)的替代方法
- Oracle语法 Nulls First Nulls Last
- nulls first & nulls last 对索引影响
- ORACLE nulls first or nulls last语法学习
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序 使用 nulls first 或者 nulls last
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracel空值排序(nulls last,nulls first)
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle排序nulls last,nulls first ,nvl,case
- PostgresQL中的NUlls first/last功能
- 神奇的IGNORE NULLS
- mysql 函数 + 存储过程
- C++继承
- BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化DP
- 测试用例设计
- 安卓点击事件的使用,并界面传值
- 【SQL】NULLS FIRST的作用
- POJ 1743 Musical Theme
- iOS雨笙 NSTimer(计时器)和NSUserDefaults(最轻量级的持久化)的简单应用
- 程序员的思维(转载于伯乐在线-author:水流年)
- 木马捆绑器设计思路
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
- 01-复杂度1 最大子列和问题
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- Json转为Map