くりゅぴ!

サーバーやWEB問題解決のメモから生活お得情報まで。未分類のものは執筆中

joinとleftjoinとwhere

一見同じに見えて全然違うよというお話

以下のようなテーブルを結合する事を考えよう
これをtableA

IDnamaage
1tom10
2yuki10
3toru11
4marry11
5sam11

これをtableB

IDbloodsex
1Aman
2Agirl
3Bman
4Ogirl
5ABman

select * from tableA left join tableB on tableA.ID = tableB.ID where sex = 'man'
こちらの結果は以下

IDnamaagebloodsex
1tom10Aman
3toru11Bman
5sam11ABman

IDで結合したものから最後にmanで絞られる。

さて、こちらはどうか?
select * from tableA left join tableB on tableA.ID = tableB.ID AND sex = 'man'
こちらの結果は以下

IDnamaagebloodsex
1tom10Aman
2yuki10nullnull
3toru11Bman
4marry11nullnull
5sam11ABman

この場合、IDとsexがmanの場合に結合され、一致しなければnullが入る結果になる。

一見似ていてもちょっと違うだけで結果が異なってくる。

参考
https://qiita.com/zaburo/items/548b3c40fee68cd1e3b7
https://www.grapecity.com/developer/support/powernews/column/how_to_database/012/page02.htm

WEB開発

タグ:

WEB開発の最新記事

2020年7月13日
印刷時改ページをする
2020年7月10日
PHPのJsを外部ドメインより呼び出す
2020年7月10日
ブラウザにキャッシュさせない

コメントを残す

メールアドレスが公開されることはありません。