mysql中not in隐含陷阱是什么
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要讲解了"mysql中not in隐含陷阱是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql中not in隐含陷阱是什么"吧!1
千家信息网最后更新 2025年11月06日mysql中not in隐含陷阱是什么
这篇文章主要讲解了"mysql中not in隐含陷阱是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql中not in隐含陷阱是什么"吧!
1、现象
1.1、使用not int 子查询
SELECT * FROM `users` WHERE id NOT IN ( SELECT uid FROM role_user )
查询结果为:
1.2、结果对吗?
当然不对
1.2.1、查询一下role_user的uid结果
SELECT uid FROM role_user
查询结果为:

1.2.2、查询一下users表的数据
SELECT * FROM `users`
1.2.3、分析查询结果
role_user表的数据uid只有一个1和null,所以说应该能查询到users表的id=2的数据
实际执行的sql为:
SELECT * FROM `users` WHERE id NOT IN ( 1,null )
但是查询的结果依然为:
如果我把sql改一下:
SELECT * FROM `users` WHERE id NOT IN ( 1)
所以可以看到是由于not in 中的结果有null 导致无法查询出数据的
2、为什么会产生这样的结果?
2.1、null属于什么?
2.2、not in 的底层实现
SELECT * FROM `users` WHERE id NOT IN ( 1,null )
not in 多个值的实现原理为
SELECT * FROM `users` WHERE id != 1 and id != null
第一反应是不是觉得是符合的啊?users表的id是主键,所以说都不为空值啊
但是为什么会这样?
我们来执行一个sql
select 1 !=null
可以看到查询结果为Null,所以说上面的sql里面的id!=null的结果也是null
由于Null无法参与boolean运算,默认为false,所以说上面的条件中and后面的id!=null永远是false
感谢各位的阅读,以上就是"mysql中not in隐含陷阱是什么"的内容了,经过本文的学习后,相信大家对mysql中not in隐含陷阱是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
结果
查询
陷阱
数据
学习
内容
面的
不对
原理
只有
多个
实际
就是
底层
思路
情况
文章
更多
条件
现象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
法环登不上服务器
密云区软件开发概况
信息化服务器的作用
软件开发连锁吴通控股
嘉定区信息软件开发要多少钱
中国网络安全史
天津华为服务器维修维保费用
相城区提供网络技术咨询热线
洛阳易佰网络技术有限公司
服务器host打不开
ps5连接不了ea服务器
云帮互联网科技有限公司
软件开发程序员绩效量化公式
现代网络技术包括
国家信息网络安全办
运维拜服务器
如何生成1000w数据库
软件开发专业l
安卓数据库操作小项目
黄浦区综合软件开发案例
数据库的备份实验结论
我的世界服务器防沉迷怎么设置
中信证券软件开发工程师裁人吗
想学软件开发
网络安全审查办法新旧对比
服务器安全应急预案
计算机网络技术广播地址怎么算
多措并举网络安全教育
网络安全有几点要注意
巴彦淖尔市网络安全处置