table1 と table2 を LEFT JOIN すると、 ON の結合条件に当てはまるデータが table2 に存在しない場合は、 NULL で返ってくる。 でも、今回は返ってこなかった。 理由は table2 の条件を on ではなく、 where で設定していたから。 where で設定すると、そもそも出力対象外になるらしい。 知らなかった・・・。 以下はダメ SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id WHERE table2.user_id = 1; 以下はOK SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id AND table2.user_id = 1;