【DB2】NOT IN使用中的大坑
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)
【DB2】NOT IN使用中的大坑的更多相关文章
- Android 推送集成华为,小米,友盟
公司的 app 一直使用的是极光推送,最近反馈比较多的是推送消息收不到,看来需要找新的推送服务了,在国内目前手机品牌占有率比较多的是华为和小米,且这两家都有自己的推送服务,同时一个合作的友商说他们使用 ...
- DB2创建数据库常用参数详解
转自http://czmmiao.iteye.com/blog/1335801 DB2创建数据库常用参数详解 本文只介绍DB2 create database语法中的常用参数http://publib ...
- 【DB2】慎用nickname,可能会引起效率较低
在使用db2的时候,在A库建立了nickname,指向B库的物理表(数据量800多万),现在使用程序(JDBC)连接数据库,并计算指标,但是发现效率很低. 解决办法: 删除A库中的nickname,在 ...
- DB2事务日志
1.DB2数据库的日志原理 事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logpr ...
- DB2与oracle类型对比
本文摘自http://www.cnblogs.com/cy163/archive/2010/11/17/1880280.html 做过DB2数据库应用迁移的工程师,了解IBM MTK工具在迁移过程中所 ...
- Docker的大坑小洼(二)
再谈<Docker的大坑小洼> 今天闲暇看了一下宏亮同学写的一篇<Docker的大坑小洼>,非常受启发.因为Docker的文章真的很多了,但大家如果只是玩一玩,有很多坑是不会碰 ...
- DB2重启数据库实例
DB2重启数据库实例时,有时停止实例会失败,此时需要先确认没有应用链接数据库,然后再关闭数据库实例,并重新启动. 1.查看是否有活动的链接 命令:db2 list applications for d ...
- 你搞懂 ORACLE、 SQLSERVER、MYSQL与DB2的区别了吗
ORACLE. SQLSERVER.MYSQL与DB2的区别--平台性: Oracle.MYSQL与DB2可在所有主流平台上运行: SQL Server只能在Windows下运行: --安 ...
- ORA-02020 : 过多的数据库链接在使用中-Windows环境解决步骤
一.现象 编译存储过程时报ORA-02020错误. 错误详细信息:ORA-04052在查找远程对象 xx@yy时出错 ORA-00604 : 递归 SQL 级别 1 出现错误 ORA-02020 : ...
随机推荐
- 链表学习二:链表反转与查找倒数第K个
//单链表反转 ListNode* RevertList(ListNode* m_pHead){ ListNode* pCurrent = m_pHead; ListNode* pPrev=NULL; ...
- 【状压基础题】poj3254 Corn Fields
题目大意 :农夫约翰有n*m块地,其中一些地荒掉了.玉米是一种傲娇的植物,种在相邻的地里会导致不孕不育.求所有种法数对100000000求余. 读入:第一行一个n一个m, 接下来是一个n行m列的矩形, ...
- 洛谷——P1226 取余运算||快速幂
P1226 取余运算||快速幂 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod ...
- 【搜索】魔板问题(BFS)
[搜索]魔板问题 时间限制: 1 Sec 内存限制: 64 MB提交: 5 解决: 3[提交][状态][讨论版] 题目描述 据说能使持有者成为世界之主的上古神器隐藏在魔板空间,魔板由8个同样大小的 ...
- [Baltic2003] Gem
[Baltic2003]Gem Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 501 Solved: 320[Submit][Status][Discu ...
- HDOJ 5693 D Game
众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列[(等差数列百科)](http://baik ...
- python3 中 and 和 or 运算规律
一.包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Python中,None.任何数值类型中的0.空字符串“”.空元组().空列 ...
- Java堆内存不足
1)使用IDEA开发程序时有时候会提示“Java Heap space error”,说明IDEA默认配置的Java堆内存不足,程序需要更多的堆内存. 2)堆(Heap)和非堆(Non-heap)内存 ...
- HTML5 Boilerplate笔记(3)
HTML5 Boilerplate项目网址:https://github.com/h5bp/html5-boilerplate
- ios中将事件同步到系统日历
//获取日历事件 EKEventStore* eventStore = [[EKEventStorealloc] init]; NSDate* ssdate = [NSDatedateWithTime ...