今天使用 MySQL 的 not in 进行查询的时候,发现结果里面并没有返回任何数据。SQL 语句没有任何问题,但是结果集却是空,实在无法理解。纠结了半天,最后使用 left join,两表关联,找到了目标数据。但是这样的话,难道 not in 就不能使用了吗?最后经过查找,找到了原因。

mysql 的 not in 中,不能包含 null 值。否则,将会返回空结果集。

对于 not in 来说,如果子查询中包含 null 值的话,那么,它将会翻译为 not in null。除了 null 以外的所有数据,都满足这一点。所以,就会出现 not in “失效”的情况。

例如:我有两张表,t_b_handle 和 t_b_detail,两张表为一一对应关系,两张表通过 t_b_handle 表中的 detail_id 关联。现有查询语句如下:

错误 SQL:

select * from t_b_detail where id not in (

select detail_id from t_b_handle

)

那么,如果 t_b_handle 表中的 detail_id 存在 null 值,那么这个 SQL 语句就是错误的。返回的结果集就是空的。

如果出现了这个问题,明明应该有数据,而使用 not in 却返回了空集,那么我们可以使用下面的 SQL 来避免这种情况的发生:

正确 SQL:

select * from t_b_detail where id not in (

select detail_id from t_b_handle where detail_id is not null

)

这样即可解决此问题。
————————————————
版权声明:本文为CSDN博主「saichaoZhang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013913942/article/details/80504100

MySQL not in查询不出数据(MySQL not in 无效)相关推荐

  1. mysql 中文字符查询不出数据_jsp页面显示不出mysql中查询出的中文字符串,插入中文也不好使...

    用Eclipse编写的jsp页面,连接的是mysql数据库.英文和数字都能正常显示,中文就显示不了. 用户注册... 用Eclipse编写的jsp页面,连接的是mysql数据库.英文和数字都能正常显示 ...

  2. mysql数据库,当数据类型是float时,查询居然查询不出数据来

    mysql数据库,当数据类型是float时,查询居然查询不出数据来,类似如下: 以后mysql数据库不用float类型,而double类型可以查得出来. 转载于:https://www.cnblogs ...

  3. nodejs操作mysql查询返回的数据_nodejs连接mysql进行数据库查询返回前台数据的坑...

    之前本来想用mongodb进行数据库的操作,后来一想自己之前简单的用过mysql,就直接使用了mysql,一下午的时间一直走在nodejs查询数据然后返回给前台的这个过程,怎么说呢,在这个过程遇到了两 ...

  4. mysql和mongo+查询效率_Mongodb VS Mysql 查询性能

    环境:同一台机器,装有 mongodb 1.4, mysql:内存 4g:两个数据库都只有 id 的唯一搜索:数据量 120w 左右,5w 个查询.对它们进行 id 或 ids 查询. mongodb ...

  5. mysql 安时间查询格式_安装MySQL慢查询日志工具Anemometer

    首先安装LNMP环境,要求PHP-5.3以上版本.参考:http://isadba.com/?p=82 或者参考 http://isadba.com/?p=572 然后下载Anemometergit ...

  6. subsonic 3.0 mysql_SubSonic3.0使用外连接查询时查询不出数据的问题修改-阿里云开发者社区...

    今天在开发时,要使用到外连接查询,如图 老是查不出数据,所以就追踪了一下代码,发现查询后生成的SQL语句变成了内连接了,真是晕 然后继续Debug,发现原来SqlQuery类在调用LeftInnerJ ...

  7. mysql滴一声弹出,关于mysql数据库在输入密码后,滴的一声直接退出

    关于mysql数据库在输入密码后,滴的一声直接退出界面的解决办法(详细办法),mysql输入密码 前一阵子,由于写程序要用到数据库,便在本子上下载了一个,却出现很多小问题(自己的台式机却没有该问题,可 ...

  8. 使用mysql日期函数查询上季度数据

    需求:计算指定客户当前季度项目数量比上月变化了多少 即:计算当前季度项目量 减去 上一季度项目量 开始想使用java代码计算出对应时间,在通过时间段查询,但感觉这样有点麻烦,便网上查了下mysql有没 ...

  9. mysql根据经纬度查询范围内数据,并根据距离排序

    最近接到一个新需求,要根据经纬度查询指定范围内的数据,并且根据距离进行排序,网上找了找相关实现方法,记录一下. java代码如下 public final class DistanceUtils {/ ...

最新文章

  1. python程序如何做界面_python是如何写界面程序的?
  2. boost::hana::is_disjoint用法的测试程序
  3. 求数组最小值及其下标
  4. 康托展开与八数码问题
  5. 【渝粤教育】电大中专沟通技巧作业 题库
  6. 棒棒糖球球机器人_球球大作战刷棒棒糖_球球大作战刷龙蛋攻略
  7. D3D11 法线贴图(凹凸贴图)
  8. 2020 农行笔试题——软开
  9. unbuntu20.04下载opencv4.5.2
  10. SSM+垃圾分类小助手 毕业设计-附源码191356
  11. libcurl官方手册
  12. .net EF 新手教程
  13. STM32Cube MX USB虚拟U盘+FATFS+W25Q128
  14. 一个摆烂年轻人对手机的需求
  15. GDK8——强大的Linux内核调试工具
  16. 微信小程序picker组件 - 省市二级联动
  17. css实现图片自动渐变切换、element-plus 的修改el-table的(边框线为虚线、表头样式)
  18. a到z的ascii码值是多少_a和A对应的ASCII码数值分别是多少啊?
  19. 牛客Top101 JS合并两个排序的列表
  20. UE4模型整体导入流程

热门文章

  1. 360 php offer,审批终于通过了,从面试到拿到奇虎360的offer已经失…
  2. 计算机师范类算师范教育类吗,师范教育类专业和计算机类专业,两者相比,哪个更适合自考生报读...
  3. Java 答疑:JDK 11(Java 11)之后没有 JRE 目录,环境用户变量配置的解决方法
  4. vue 点击li 中的img 怎么不冒泡_Vue全解
  5. android 图片 切换,Android 应用开发笔记 - 切换图片(ImageSwitcher)
  6. python建模仿真 matlab_清华大学出版社-图书详情-《仿真建模与MATLAB实用教程》
  7. js 控制鼠标_JS逆向 | 面向小白之eval混淆
  8. 网页无法调用java9_JAVA 9 (内部类,异常,包)
  9. Python高级数据类型-字符串,列表,元组,字典
  10. Hadoop之HDFS应用