Oracle Null与in,exists的关系说明(not in 查不到结果)
同事说查询遇到一个奇怪的事,2个表进行not in 操作没有返回结果,正常情况下应该是有返回的。
一.问题重现
一般来说,问题能重现就是好消息,最怕不能重现。
SQL> connscott/tiger;
Connected.
SQL> descemp
Name Null? Type
------------------------------------------------- -----------------
EMPNO NOT NULLNUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
将emp 表复制一份:
SQL> createtable emp1 as select * from emp;
Table created.
我们向emp 表里插入一些值:
SQL> insertinto emp(empno,ename) values(8888,'Dave');
1 row created.
SQL>commit;
Commitcomplete.
这里我们只插入了empno和ename,其他为空。
下面进行2张表的的操作:
SQL> selectempno,ename from emp where job not in (select job from emp1);
no rowsselected
--这里没有返回结果集,正常情况下应该反回我们之前insert 的dave。
SQL> selectempno,ename from emp where job in(select job from emp1);
EMPNO ENAME
--------------------
7934 MILLER
7900 JAMES
7876 ADAMS
7369 SMITH
7844 TURNER
7654 MARTIN
7521 WARD
 
相关新闻>>
- 发表评论
-
- 最新评论 更多>>