【DB2】NOT IN使用中的大坑
2024-08-25 16:38:04
1.环境准备
------建表TB
DROP TABLE TB; CREATE TABLE TB
(
ID INTEGER,
LEVEL_DETAIL VARCHAR (100)
);
INSERT INTO TB (ID, LEVEL_DETAIL)
VALUES (1, 'A'); INSERT INTO TB (ID, LEVEL_DETAIL)
VALUES (NULL, 'A'); INSERT INTO TB (ID, LEVEL_DETAIL)
VALUES (2, 'B'); INSERT INTO TB (ID, LEVEL_DETAIL)
VALUES (1, 'A++'); INSERT INTO TB (ID, LEVEL_DETAIL)
VALUES (1, 'A--');
----建表TB_TEMP
DROP TABLE TB_TEMP; CREATE TABLE TB_TEMP
(
ID INTEGER,
LEVEL_DETAIL VARCHAR (100)
); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (1, 'A'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (2, 'B'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (1, 'A++'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (1, 'A--'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (3, 'CCC'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (4, 'CCC'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (4, 'C'); INSERT INTO TB_TEMP (ID, LEVEL_DETAIL)
VALUES (5, 'AA');
数据展示:
TB表
TB_TEMP表
---使用IN
SELECT * FROM TB_TEMP WHERE ID IN (SELECT ID FROM TB GROUP BY ID)
--EXISTS
SELECT * FROM TB_TEMP A WHERE EXISTS (SELECT 1 FROM TB B WHERE A.ID=B.ID)
--NOT IN (跟预期结果不一致)
SELECT * FROM TB_TEMP WHERE ID NOT IN (SELECT ID FROM TB GROUP BY ID)
预期结果:
ID | LEVEL_DETAIL |
3 | CCC |
4 | CCC |
4 | C |
5 | AA |
实际结果:
--NOT EXISTS(没问题)
SELECT * FROM TB_TEMP A WHERE NOT EXISTS (SELECT 1 FROM TB B WHERE A.ID=B.ID)
在使用过程中,尽量不要使用NOT IN ,当列中出现了NULL值,那么将会无结果返回(NULL不是具体的值,做二元运算符时,计算结果也为NULL)
最新文章
- 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
- Solve VS2010 Error ";Exceptions has been thrown by the target of an invocation";
- 工具mark
- 使用XmlHelper添加节点C#代码
- 基于 VLC 的 Android 多媒体解决方案
- 小白学数据分析----->;什么才是留存率的关键?
- mysql中如何嵌套使用insert和select
- Java并发——使用Condition线程间通信
- C#之垃圾回收
- ios专题 -动画
- ASP.NET打印EXCEl报表技术总结
- Android使用SharedPreferences保存数组
- 收藏的一段关于java大数运算的代码
- asp.net访问网络路径方法(模拟用户登录)
- 如何利用docker快速构建MySQL主从复制环境
- DSAPI WIN7磨砂+窗体投影组合
- 错误模块名称: KERNELBASE.dll错误
- oracle中常用的对用户的操作
- MySQL将一张表的某些列数据,复制到另外一张表,并且修改某些内容
- IntelliJ IDEA java selenium
热门文章
- 学懂grid布局:这篇就够了(译)
- Android学习--跨程序共享数据之内容提供其探究
- Diamond Collector (动态规划)
- RPD Volume 168 Issue 4 March 2016 评论2
- Xamarin XAML语言教程控件模板的模板绑定
- [BZOJ4896][THUSC2016]补退选(Trie)
- 1.8(学习笔记)监听器(Listener)
- 5.9 j(java学习笔记)强软弱虚引用及WeakHashMap、IdentityHashMap、EnumMap
- [SourceTree]--记录Win10 安装SourceTree免注册登陆
- mybatis-xml特殊字符处理