質問: sqlの問題で解答を見ても腑に落ちません 問題集の答えが腑に落ちないのでどなたかわかりやすく説明いただけますでしょうか? emp表 empno ename sal mgr deptno -------------------------------------- 1000 scott 1000 null 10 1010 adams 2000 1000 10 1030 taylor 600 1000 30 1050 miller 800 1030 10 以下の副問い合わせを使ったselect文を実行した。検索されるデータ件数を選びなさい。 select empno,ename from emp where empno not in (select mgr from emp); a:0件 b:1件 c:2件 d:3件 解答はaの0件なのですが、なぜ0件なのでしょうか? 当方の解釈ですと、副問い合わせでmgrが(null,1000,1030)となり where empno not in (null,1000,1030) で 「empnoがnullでも1000でも1030でもない件数」 となり、empnoが1010と1050の行が検索され、cの2件が正解なのでは? と思っているのですが・・・ 間違いをわかりやすく教えていただけますでしょうか? 宜しくお願いします。
回答: not inの罠ですね。 以下のページが参考になるでしょう。 3値論理とnull(http://codezine.jp/article/detail/532?p=1)