カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

JOIN句で結合するカラムにNULLが含まれる場合

この記事は最終更新日から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,956 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です