今天遇到一个问题,not in 查询失效,我以为是穿越了,仔细查了点资料,原来理解有误!

select value from temp_a a
where a.id between 1 and 100
and not exists(select * from temp_b b where a.value=b.value);

这时能查出结果

select value from temp_a a
where a.id between 1 and 100
and a.value not in(select value from temp_b);

此时查出的结果为空.

经过google终于找出原因: 内表(temp_b)有空值. 用not in得到的结果集都为空.以下是结论:

1、对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。

2、对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。

本文转自:http://blog.csdn.net/haitaofeiyang/article/details/50158395

最新文章

  1. 今天我们来认识一下JSP的九大内置对象
  2. 内置对象session ,cookic,Application,ViewState
  3. 【框架】网络请求+Gson解析--Retrofit 2
  4. [转] Oracle analyze 命令分析
  5. SPOJ #429 Simple Numbers Conversion
  6. php中数组自定义排序
  7. Andoird - SQLite 数据库 基础教程
  8. Ajax提交Form表单及文件上传
  9. Jstorm调度定制化接口(0.9.5 及高版本)
  10. Inno Setup 自定义界面心得
  11. 《java入门第一季》之面向对象(一个易错面试题)
  12. mvc设计模式的优点
  13. springboot项目屏蔽mq或者mongodb的监控日志输出
  14. CentOS 7 常用命令大全
  15. Excel修改证件照图片背景色
  16. 实时ETL
  17. 算法实践--最长公共子序列(Longest Common Subsquence)
  18. callback源码分析——callbacks
  19. Wordpress搭建
  20. Django用ajax进行post请求

热门文章

  1. 本地H5模式写的APP体验可以比APP还好
  2. 想成为Git大神?从学会reset开始吧
  3. 开发规范(一) 如何记录日志 By 阿里
  4. Selenium多浏览器测试
  5. spring的ioc容器生成的对象也是代理对象对吗
  6. Linux课程知识点总结(二)
  7. [php]配置文件中的超时时间
  8. java数组之基本语义
  9. java线程,进程,多线程
  10. C语言3中循环语句的比较