ホームページ >データベース >mysql チュートリアル >MySQL の「NOT IN」が空のサブクエリで失敗するのはなぜですか?
クエリに、条件 Grade.ID_Courses NOT IN ( SELECT ID_Courses FROM Evaluation WHERE NAME='JOHN' and Year=1) をフィルタリングして除外します同じ NAME と Year 値を持つ、評価テーブルに存在しない、グレード テーブルの行。ただし、「JOHN」という名前が評価テーブルに存在しない場合、クエリは出力を生成しません。
制限が 1 つありますサブクエリで NOT IN を使用すると、サブクエリの 1 つに NULL 値が含まれる場合に不整合が発生しやすくなります。これは、SQL が 3 値ロジックを採用しており、NULL は未知の値または欠損値を表すためです。 NULL 値を含む可能性のあるサブクエリに NOT IN を適用すると、結果が予測不能になったり不正確になる可能性があります。
SELECT Grade.ID_Courses, Course.ID_Courses, Grade.NAME, Course.NAME, Grade.ID_Courses, Evaluation.NAME, Evaluation.Year, Grade.Year FROM Grade JOIN Course ON Grade.ID_Courses = Course.ID_Courses LEFT JOIN Evaluation ON Grade.NAME = Evaluation.NAME and Grade.Year = Evaluation.Year WHERE Grade.NAME = 'JOHN' AND Grade.Year = 1 AND Evaluation.NAME IS NULL;
以上がMySQL の「NOT IN」が空のサブクエリで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。