NOT IN 亂像(子查詢建議使用 NOT EXISTS 代替 NOT IN)
阿新 • • 發佈:2019-01-12
舉個例子:
如下圖:
A、B 表的資料如上圖所示,
語句:
SELECT A.ID FROM A WHERE AID NOT IN (SELECT ID FROM B);
該語句的結果集,由於 B 表中空值(oracle:空字串或者null;mysql:null值),將永遠為空,無論 A 表的資料是什麼樣子。
有些時候,這可能與我們設想的邏輯不符。
建議自子查詢的時候,儘量使用 not exists,既可以保證效率,又可以防止子查詢中有空值(oracle:空字串或者null;mysql:null值)
下面將介紹Mysql與Oracle的子查詢中 使用 NOT IN 的區別
mysql結果如圖:
oracle如下圖: