今天发现Mysql的not in使用的一个问题,大致是:

select * from A where id not in (select fid from B).

发现查询结果无论如何都是0条记录。后来发现B里面返回的查询结果集有一条NULL值,查了资料才知道mysql 的not in里面如果有一个NULL值,将返回0条记录。

要解决这个问题需要把 select fid from B 变成

select fid from B where B.fid is not null

这个问题在其他的数据库里也会有,是因为 not in的处理有问题。再具体详细说明一下,如下:

select * from A where id not in (1,2,null )

那么就没有记录返回,因为里面有null值,当用id和null比较的时候,会返回false,所以一条记录都不会返回,所以要改成下面就可以了:

select * from A where id not in (select bid from B where bid  is not null ) 

最新文章

  1. 关于war包 jar包 ear包 及打包方法
  2. 学习Coding-iOS开源项目日志(二)
  3. MVC 4 用Nuget安装组件后的常见错误
  4. UIApplication 概述
  5. java基础面试题(转)
  6. Apache Spark GraphX的使用简介
  7. Java 基础知识(一)
  8. javaScript中的一些知识
  9. Django urls常用匹配语法
  10. win7如何安装mircosoft SDKs
  11. Delphi中 StrToIntDef函数的用法
  12. SpringMVC的标签库
  13. Synchronized锁性能优化偏向锁轻量级锁升级 多线程中篇(五)
  14. PHP开发要点与技巧总结(二)
  15. python super参数错误
  16. iOS开发支付篇-内购(IAP)
  17. Struts2重要知识点总结
  18. 使用RMAN Active duplicate创建异地auxiliary Database
  19. vue中上传图片至阿里云oss
  20. 通过编写PHP代码并运用“正则表达式”来实现对试题文档进行去重复、排序

热门文章

  1. 【高级JEE技术】JMS
  2. 转:Unity3D的四种坐标系
  3. jquery实现asp.net 网页鼠标所在位置
  4. Brackets 配置
  5. datatable转json
  6. 检测PC端和移动端的方法总结
  7. CentOS下Apache+SVN+LDAP的安装与配置
  8. <UNIX环境高级编程>文件共享及fork函数
  9. mysql---左连接、右连接、内连接之间的区别与联系
  10. PH获取当前url路径及服务器路径汇总 (url 获取当前路径 服务器路径)