如果空值可能是子查询结果的一部分,则不应与主查询中的NOT IN运算符一起使用。为什么呢?看下面例子就明白了。
NOT IN后面的子查询有记录为NULL,主查询查不到记录
select * from emp where 3 not in (1, 2, null);
未选定行
因为这个查询可以理解为
select * from emp where 3 <> 1 and 3 <> 2 and 3 <> null;
由于NULL值不能参与比较运算符,导致条件不成立,因此查询不出来数据。
如果是IN运算则能查到数据
select * from emp where 1 in (1, 2, null);
因为可将该查询理解为
select * from emp where 1 = 1 or 1 = 2 or 1 = null;
虽然NULL值同样不能做比较,但或运算的短路效应使得前面条件已成立时全盘条件即成立,因此输出了结果。
NOT IN之后的子查询不能包含NULL值
来源:这里教程网
时间:2026-03-03 13:45:57
作者:
编辑推荐:
- NOT IN之后的子查询不能包含NULL值03-03
- oracle数据库常见故障和解决难度03-03
- 6-dw_元数据管理03-03
- gc cr request等待事件03-03
- 外键没有索引哪些DML操作会被阻塞03-03
- Oracle/云MySQL/MsSQL“大迁移”真相及最优方案03-03
- 获取AWR的脚本,可以在crontab里面部署03-03
- Oracle linux 7.5安装oracle 12c dg一直提示ORA-0101703-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- NOT IN之后的子查询不能包含NULL值
NOT IN之后的子查询不能包含NULL值
26-03-03 - 6-dw_元数据管理
6-dw_元数据管理
26-03-03 - 外键没有索引哪些DML操作会被阻塞
外键没有索引哪些DML操作会被阻塞
26-03-03 - Oracle/云MySQL/MsSQL“大迁移”真相及最优方案
Oracle/云MySQL/MsSQL“大迁移”真相及最优方案
26-03-03 - Oracle SQL Model Clause
Oracle SQL Model Clause
26-03-03 - linux下修改mtu值
linux下修改mtu值
26-03-03 - Oracle RAC+DG环境搭建(CentOS 7+Oracle 12C)(八) 安装数据库软件
- Oracle RAC+DG环境搭建(CentOS 7+Oracle 12C)(五)配置共享存储
- Oracle RAC+DG环境搭建(CentOS 7+Oracle 12C)(一)配置实验虚拟机
- Oracle RAC+DG环境搭建(CentOS 7+Oracle 12C)(四) 操作系统参数及环境变量设置
