- MySQL
- 2022-07-12 - 更新:2022-10-25
この記事は最終更新日から1年以上経過しています。
JOIN句を使って複数のテーブルを結合するとき、結びつけるカラムにNULLが含まれる場合があるとデータが抽出されません。
これは「NULL = NULL」がtrueにならないからだそうです。
そんなときは以下のようにすると抽出することができます。
SELECT * FROM TEST_TABLE1 INNER JOIN TEST_TABLE2 AS TEST_T2 ON TEST_T1.id = TEST_T2.id AND ((TEST_T1.name = TEST_T2.name) OR (TEST_T1.name IS NULL AND TEST_T2.name IS NULL));
もしくは以下のようでもOKです。
AND IFNULL(TEST_T1.name, '') = IFNULL(TEST_T2.name, '');
こちらはNULL安全等価演算子(宇宙船演算子)を使うことで解決できます。
別の記事にしましたので、そちらをご覧ください。
MySQLのNULL安全等価演算子(宇宙船演算子)
14,231 views