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);
查詢結果