mysql中not in隐含陷阱是什么
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要讲解了"mysql中not in隐含陷阱是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql中not in隐含陷阱是什么"吧!1
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
数据库只考虑逻辑结构
公安机关摸底机房服务器
软件开发两万一个月吗
如何实现网络安全英语作文
网络技术工程师好做吗
afc系统网络安全问题
河南省委网络安全招聘
t3单位名称数据库
a-b数据库概论
大学生 网络安全 对策
查找某行某列位置数据库
服务器电源48v输入
广联达软件开发流程
任务管理协作软件服务器
云南服务器电源可以定制吗
网络技术检测员微博
重庆浪潮服务器虚拟化系统
加强网络安全基础建设的机遇
福建省教网络技术的大专
网络技术研修
加强国家网络安全
图像处理和软件开发
做软件开发工作
筑起网络安全城墙 共同
磐石软件开发专业
微软的TMG服务器管理手册
庞圣敏网络安全
天津市安全危险源辨识数据库
软件开发测试奖惩
op服务器管理员