如何解决MySQL中NOT IN填坑之列为null的问题
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了如何解决MySQL中NOT IN填坑之列为null的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在公司做一个小
千家信息网最后更新 2026年11月03日如何解决MySQL中NOT IN填坑之列为null的问题
这篇文章主要介绍了如何解决MySQL中NOT IN填坑之列为null的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
在公司做一个小功能的时候,统计一下某种情况下有多少条数据,然后修改的问题,当时感觉很简单,写了一个如下的 SQL:
SELECT COUNT(*) FROM t1 where tl.c1 not IN (SELECT t2.c1 FROM t2);
预期的结果是:有多少条数据在 t1 中,同时不在 t2 中,结果为:0,也就是 t1 中数据都在 t2 中,但是很容易就发现某些数据在 t1 中不在 t2 中,所以就感觉很奇怪,这个 SQL 看着也没问题啊。经过一番查询原来是因为 t2 的 c1 字段包含了 null 值,修改如下两种形式都可以得到预期的结果:
SELECT COUNT(*) FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1 WHERE t2.c1 IS NULL OR t2.c1 = '';
或者
select COUNT(*) from t1 where t1.c1 not in (select t2.c1 from t2 where t2.c1 is not null AND t2.c1 != '');
所以都是 null 引起的(为了避免错误我把空串也加上了),原因是 not in 的实现原理是,对每一个 t1.c1 和每一个 t2.c1 (括号内的查询结果)进行不相等比较(!=)。
foreach c1 in t2:if t1.c1 != c1:continueelse:return falsereturn true
而 SQL 中任意 !=null 的运算结果都是 false,所以如果 t2 中存在一个 null,not in 的查询永远都会返回 false,即查询结果为空。
感谢你能够认真阅读完这篇文章,希望小编分享的"如何解决MySQL中NOT IN填坑之列为null的问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
结果
问题
数据
篇文章
查询
同时
感觉
下有
也就是
价值
公司
兴趣
功能
原因
原理
字段
形式
情况
括号
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡
伟宏互联网科技
重生之互联网科技帝国
科技互联网龙头
圆梦互联网科技
美国互联网科技巨头监管
科技类互联网
互联网金融公司科技
腾讯科技 互联网女皇
美国互联网黑科技
互联网科技的未来发展
湖南洣水互联网科技有限公司扣款
上海电发互联网科技有限公司
科技赋能互联网健康
花神(南京)互联网科技有限公司
搜狐科技互联网
互联网科技创新的路径
无锡工业互联网科技有限公司
北京军民互联网科技公司
陕西彩京云互联网科技有限公司
百单网互联网科技有限公司
互联网金融监管科技数据
工业互联网科技新基建
没上市的科技互联网公司
上海万想互联网科技
互联网科技素材视频竖屏
中国科技创新与世界互联网大会
天津腾达互联网科技有限公司
陕西九四连强互联网科技有限公司
银川新华互联网科技学校原画