dポイントプレゼントキャンペーン実施中!

Left Joinについて

select * From shohin left join meisho on sh03 = me02 and me01 = 1 where ****
select * From shohin left join meisho on sh03 = me02 where me01 = 1
left joinの中に me01 = 1があるパターンとwhere句に me01 = 1
があるパターンで検索結果が変わってくる具体的にどう変わるのでしょうか
良く理解ができていないので教えてください

A 回答 (3件)

最初の方はleft join前にme01=1をはじいているので、マッチしないテーブルはmeisho側がnullとなって選択されます。


後の方はleft joinの後でme01=1をはじいているので、せっかくshohin側のみに有る行が選択されてもme01がNULLとなっているので、この部分ははじかれてしまいます。
    • good
    • 0

ANo.2回答者:nharasawa様



MySQLで実際に確認してみて,違いがあることが分かりました。
ANo.2のご説明も納得です,たいへん勉強になりました。
    • good
    • 0

「me01 = 1」は,shohin表とmeisho表との結合条件ではなく,行の選択条件ですので where句に書くべきものでしょう。


検索結果はどちらも同じだと予想します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!