結論: not in を使用する場合は、フィールドに null 値があるかどうかに注意する必要があります。これを使用すると、null 値の行が除外されるためです。
not in を使用すると、フィールドが null 値の行になるようにフィルターされます。
in は null 値を含む行をカウントせず、null 値の影響を受けません。
理由: null 値は他の値と比較した場合に高速です
注: not in に加えて、「!=」、「not like」などでもこの問題が発生します。
例:
1. 小さな例として、データの全量を下の図に示します。
SELECT * from temp;
2. スコア=70のデータを除外したい場合は、次のように記述すると、結果でスコアがnullの行が除外されます。
SELECT * from temp where score not in (70);