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)

最新文章

  1. 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
  2. Solve VS2010 Error "Exceptions has been thrown by the target of an invocation"
  3. 工具mark
  4. 使用XmlHelper添加节点C#代码
  5. 基于 VLC 的 Android 多媒体解决方案
  6. 小白学数据分析----->什么才是留存率的关键?
  7. mysql中如何嵌套使用insert和select
  8. Java并发——使用Condition线程间通信
  9. C#之垃圾回收
  10. ios专题 -动画
  11. ASP.NET打印EXCEl报表技术总结
  12. Android使用SharedPreferences保存数组
  13. 收藏的一段关于java大数运算的代码
  14. asp.net访问网络路径方法(模拟用户登录)
  15. 如何利用docker快速构建MySQL主从复制环境
  16. DSAPI WIN7磨砂+窗体投影组合
  17. 错误模块名称: KERNELBASE.dll错误
  18. oracle中常用的对用户的操作
  19. MySQL将一张表的某些列数据,复制到另外一张表,并且修改某些内容
  20. IntelliJ IDEA java selenium

热门文章

  1. 学懂grid布局:这篇就够了(译)
  2. Android学习--跨程序共享数据之内容提供其探究
  3. Diamond Collector (动态规划)
  4. RPD Volume 168 Issue 4 March 2016 评论2
  5. Xamarin XAML语言教程控件模板的模板绑定
  6. [BZOJ4896][THUSC2016]补退选(Trie)
  7. 1.8(学习笔记)监听器(Listener)
  8. 5.9 j(java学习笔记)强软弱虚引用及WeakHashMap、IdentityHashMap、EnumMap
  9. [SourceTree]--记录Win10 安装SourceTree免注册登陆
  10. mybatis-xml特殊字符处理