zoukankan      html  css  js  c++  java
  • 【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表

    image

    TB_TEMP表

    image

    ---使用IN
    SELECT * FROM TB_TEMP WHERE ID IN (SELECT ID FROM TB GROUP BY ID)

    image

    --EXISTS
    SELECT * FROM TB_TEMP A WHERE EXISTS (SELECT 1 FROM TB B WHERE A.ID=B.ID)

    image

    --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

    实际结果:

    image

    --NOT EXISTS(没问题)
    SELECT * FROM TB_TEMP A WHERE NOT EXISTS (SELECT 1 FROM TB B WHERE A.ID=B.ID)
    image

    在使用过程中,尽量不要使用NOT IN ,当列中出现了NULL值,那么将会无结果返回(NULL不是具体的值,做二元运算符时,计算结果也为NULL)

  • 相关阅读:
    UIPasteboard 粘贴板
    UIViewController没有随着设备一起旋转的原因
    UIButton 应用选择状态(附:UIButton 常用状态)
    WebService 中参数为枚举时引发的血案
    设计模式(1)之面向对象设计原则 阿正
    2012年年终总结 阿正
    生活工作如登山 阿正
    感谢我的技术总监 阿正
    尽孝要尽早 阿正
    我老了吗?不 你依然年轻 阿正
  • 原文地址:https://www.cnblogs.com/OliverQin/p/6735324.html
Copyright © 2011-2022 走看看