Oracle使用NOT IN条件查询会遇到什么坑
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下Oracle使用NOT IN条件查询会遇到什么坑,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!剧情还原:
千家信息网最后更新 2026年11月01日Oracle使用NOT IN条件查询会遇到什么坑
小编给大家分享一下Oracle使用NOT IN条件查询会遇到什么坑,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
剧情还原:
上周投产之后同事应该在某个页面查询的时候新增了一个not in的条件,结果导致列表部分数据不展示了,经排查发现原来是not in条件的问题。
问题复现:
1.基础数据: 共10条数据 状态为空-1条 已作废-4条 报告审批-5条
select * from v_safe_testengineer v where v.vst_tester ='w07387';
2.新增not in '已作废'条件之后:共5条数据 报告审批-5条 什么情况?状态为空的数据怎么不见了?
select * from v_safe_testengineer v where v.vst_tester ='w07387' and v.vst_note not in '已作废';
预期结果:共6条数据 状态为空-1条 报告审批-5条
解决方案:
3.改进SQL之后:与预期结果一致
select * from v_safe_testengineer v where v.vst_tester ='w07387' and (v.vst_note not in '已作废' or v.vst_note is null );
ps:这种方案也能解决该问题,但是大家都知道Oracle in 超过1000个参数会报 "ORA-01795: 列表中的最大表达式数为 1000"
4.最终方案>达到预期结果
select * from v_safe_testengineer v where v.vst_tester ='w07387' and not exists (select a.id from v_safe_testengineer a where a.vst_tester ='w07387' and a.vst_note = '已作废' and a.id = v.id)
大家拼接SQL条件的时候如果字段值有NULL的情况不要使用not in 这种方式,还是建议大家使用 not exists 和 exists ,相对来说效率高一点。
以上是"Oracle使用NOT IN条件查询会遇到什么坑"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
条件
数据
结果
查询
报告
方案
状态
篇文章
问题
内容
情况
时候
最大
一致
不怎么
剧情
参数
同事
基础
大部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
互联网是第几次科技革命的成果
深圳恒合互联网络科技有限公司
鸠鸠互联网科技
互联网科技与金融科技
奇酷互联网科技
互联网科技咨询
互联网科技生活的内容
蓝色互联网科技
上海电发互联网科技有限公司
昭通云南众福互联网科技有限公司
港股科技和互联网
互联网方面的科技前沿
互联网公司高科技产品
互联网领先科技宣传片
上海同邻互联网科技有限公司规模
互联网界的黑科技
科技信息时代互联网发展
科技互联网经济论坛
利用互联网等科技手段
安徽鑫晟辉互联网科技
多迪互联网科技有限公司
互联网科技素材视频竖屏
中国的互联网科技企业的崛起
移动互联网科技股
港股科技和互联网
岳阳华臻互联网科技有限公司
黑科技 体验场景 互联网大会
昆明中奇联合互联网科技
华人运通互联网科技公司