1.准备测试数据
CREATE TABLE tmp_1 
(val integer);CREATE TABLE tmp_2 
(val integer, val2 integer);INSERT INTO tmp_1 (val) VALUES (1);
INSERT INTO tmp_1 (val) VALUES (2);
INSERT INTO tmp_2 (val) VALUES (1);
INSERT INTO tmp_2 (val, val2) VALUES (NULL,0);
2.测试
假设我们需要从tmp_1找出val值不存在于tmp_2表的记录。
 当tmp_2中val字段存在空值时,就会出现判断失效情况:
2.1 判断失效的情况
SELECT val FROM tmp_1 
WHERE val NOT IN (SELECT val FROM tmp_2); 
查询结果
已在 Oracle、MySQL验证,均存在相同情况
2.1 调整后
此处对子查询进行修改
SELECT val FROM tmp_1 
WHERE val NOT IN (SELECT val FROM tmp_2 where val is not null); 
查询结果

