質問: where句で結合。inner joinとの違い mysqlで複数テーブルからデータ取得する際、 fromの後に、テーブル名を2つ書いて、「where」で繋げる書き方と、 「join ★★ on」で繋げる書き方では、何が違うのでしょうか? ・「inner join」と同じ意味でしょうか? ・書き方によっては、「left outer join」みたいにも書けるのでしょうか? ・普通は、どちらの書き方で書くとか、そういうお作法的な暗黙の了解はあるでしょうか? ・例えば「where」だと3つ以上繋げられない(?)から、奨励されていない、とか...
回答: select * from 表a, 表b where 表a.列1 = 表b.列2 and 表a.列3 = 値 と select * from 表a inner join 表b on 表a.列1 = 表b.列2 where 表a.列3 = 値 は同じ結果となります。前者の方が古くからある構文,後者が新しい構文になります。新しいといっても20年は経っていますけれど。 > 普通は、どちらの書き方で書くとか、 > そういうお作法的な暗黙の了解はあるでしょうか? 旧構文は,結合を指定する要素がfrom句とwhere句に分かれてしまっているのに対して, 新構文では次のように各句の機能が明確ですから,join句の使用をお薦めします。 射影...select * 結合...from 表a inner join 表b on 表a.列1 = 表b.列2 選択...where 表a.列3 = 値 > 書き方によっては「left outer join」みたいにも書けるのでしょうか? 旧構文で外部結合を記述することもできますが,各データベース製品の独自構文になります。標準sqlの規格ではありません。 > 「where」だと3つ以上繋げられない(?)から、奨励されていない、とか そういう制限はありません。