Oracle使用NOT IN条件查询会遇到什么坑
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下Oracle使用NOT IN条件查询会遇到什么坑,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!剧情还原:
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
mix数据库
奥飞数据网络安全
潍坊软件开发公司规模排行
软件开发用华为还是荣耀笔记本
数据库是结构化的数据集合对吗
小学生网络安全小视频素材
智慧家庭数据库设置在什么地方
软件开发应届生规划
廊坊软件开发厂家价格
天迹服务器
泰拉瑞亚1.4手机如何开服务器
主机cod17连接不上服务器
高新区网络技术服务怎么样
互联网网络安全现状分析
数据库lnk 字段限定
提升数据库开发效率
江西经济频道网络安全回放
网吧网络安全审核登记表
出租房开放网络安全吗
rs232串口服务器
支付宝网络技术总监是谁
陕西军工网络安全情况
哈密网络技术服务
海康pms 等待连接数据库
数据库不停机换库方案
专科网络技术论文
中国服务器式旅行
数据库dblink的用法
数据库表操作命令
钓鱼城杯网络安全2021