読者です 読者をやめる 読者になる 読者になる

sql joinの条件とwhereの条件の違いについて

sql mysql

ケース1

left join t2 on t2.t1_id = t1.id AND t2.status = 'ERROR'

ケース2

left join t2 on t2.t1_id = t1.id
中略
where t2.status = 'ERROR'

ケース1の場合は結合前の条件となるため、ERRORでないt2のデータもNULLとしてデータを取得する。
ケース2の場合は結合後の条件となるため、ERRORでないt2のデータはおろかt1のデータも取得できなくなってしまう。(inner joinならどちらも一緒)

要はleft joinしているテーブルに対する条件はwhereには記述しない方がよいってことか。

俺は何年sqlをやっているんだろう。やっぱり死んだ方がいいな。