次のテーブルは、各種の形式の問合わせにおけるNOT INでのnullの動作をまとめたものです。
問合わせの形式 | 条件 | 結果 |
---|---|---|
SELECT ... FROM T1 WHERE x NOT IN (SELECT y FROM T2); |
yの値の1つがnullの場合 | 問合わせ全体を通じてT1の行は返されません。 |
Subqueryによって行が返される場合、およびxにnullが含まれる場合 | xにnullを含むT1の行は返されません。 | |
SELECT ... FROM T1 WHERE expression_list_1 NOT IN (SELECT expression_list_2 FROM T2); |
expression_list_2の最初のフィールドがnullの場合 | どの行もT1から返されません。 |
expression_list_2の最初のフィールド以外のフィールドにnullがある場合 | 行が返されます。 | |
Subqueryが行を返す場合、およびexpression_list_1の最初のフィールドにnullがある場合 | expression_list_1の最初のフィールドにnullを含むT1の行は、返されません。 | |
SELECT ... FROM T1WHERE expression_list_1 NOT IN (SELECT expression_list_2 FROM T2 WHERE search_condition); |
T2に対するsearch_conditionが行を返さない場合 | expression_list_1の最初のフィールドにNULLがあるものも含めて、T1のすべての行が返されます。 |