Oracle not in子连接查询不到值的问题(not in 不能查询null数据)
2015-07-13 10:49
806 查看
前几天在项目中,做数据导入时,发现not in和in 查出来的条数不互补。ATABLE2明明中有些记录在ATABLE3中不存在,但是not in时查不出记录。
CREATE TABLE ATABLE2
( "MRID" VARCHAR2(20 BYTE)
)
CREATE TABLE ATABLE3"
( "MRID" VARCHAR2(20 BYTE)
)
查询语句如下
select count(*) from atable2 where mrid not in (select mrid from atable3),查询结果为0。
经过几番检查,发现的not in 和null的问题。atable3表中存在mrid为null的记录,此时not in 查询不到值。
修改方案如下:在子查询中增加非空过滤
select count(*) from atable2 where mrid not in (select mrid from atable3 where mrid is not null)
完毕!
ps:count统计函数对null值也不适用,需用count(*).
CREATE TABLE ATABLE2
( "MRID" VARCHAR2(20 BYTE)
)
CREATE TABLE ATABLE3"
( "MRID" VARCHAR2(20 BYTE)
)
查询语句如下
select count(*) from atable2 where mrid not in (select mrid from atable3),查询结果为0。
经过几番检查,发现的not in 和null的问题。atable3表中存在mrid为null的记录,此时not in 查询不到值。
修改方案如下:在子查询中增加非空过滤
select count(*) from atable2 where mrid not in (select mrid from atable3 where mrid is not null)
完毕!
ps:count统计函数对null值也不适用,需用count(*).
相关文章推荐
- oracle11g ADR 位置
- Oracle Error 之SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
- Oracle中Rownum的使用技巧与注意事项
- Oracle数据库学习
- oracle创建表空间
- plsql连接不上64位oracle11g的解决办法
- 在ADF应用中,能够通过 oracle.adf.view.rich.security.FRAME_BUSTING 参数来使用framebusting功能。
- 5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle该项目的开发——使用datagrid做报表
- oracle默认管理员的帐号和密码以及密码修改和解除锁定
- [Oracle] - Create DB on Oracle 12c for an Application
- 由于以下错误,Enterprise Manager 配置失败 oracle 11g
- Oracle 11g ORA-12560: TNS: 协议适配器错误!解决方法
- Oracle ->> 查看分区表的每个分区的数据行分布情况
- oracle 创建用户 表导入导出
- oracle_set运营商
- oracle锁表解表
- 使用NFS安装oracle软件
- 一键安装ORACLE并建库脚本
- Oracle 数据迁移(从Oracle11G迁移到更高的版本号Oracle10G低版本号)
- solaris X86-64下一个ORACLE战斗11.2.0.3.8在一波折叠补丁