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

17,115 views