如何解决MySQL中NOT IN填坑之列为null的问题
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍了如何解决MySQL中NOT IN填坑之列为null的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在公司做一个小
千家信息网最后更新 2025年01月24日如何解决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安全错误
数据库的锁怎样保障安全
计算机病毒可以连接数据库
回收服务器收费标准
网络安全等级保护定级
ibm服务器网络唤醒怎么设置
全国计算机3级数据库技术
网络安全中恶意修改通道终点
电脑服务器密码忘了怎么找回来
web客户和web服务器的协议
开发环境数据库安装在虚拟机好吗
网络安全班会300
数据库为啥无法添加性别
北京能源软件开发
九级的服务器
航嘉500服务器电源家用可以吗
广东系统软件开发服务费
利用阿里云服务器犯罪
ukb数据库简介
水晶排课找不到数据库文件
浙江网络技术开发概况
北京思方远网络技术公司
上海应应互联网科技有限公司
青少年网络安全培训课教程
数据库管理系统怎么做
太仓无忧网络技术咨询
想学网络技术做网络项目
服务器和磁盘阵列
苍南草根网络技术服务中心
服务器为什么初始化失败了
数据库中否怎么打
惠山区计算机网络技术问答知识