質問: table2.primarykey where (some other conditions) これら2つはmysqlでも同じように機能しますか?
回答: inner joinはあなたが使うべきansi構文です。特にたくさんのテーブルを結合するときは、一般的に読みやすくなっています。必要に応じていつでもouter joinに簡単に置き換えることができます。where構文はよりリレーショナルモデル指向です。2つのテーブルjoinedの結果は、結合列が一致する行のみを選択するフィルタが適用されるテーブルのデカルト積です。これはwhere構文で見るのが簡単です。あなたの例に関しては、mysql(そして一般的にsql)では、これら二つの問い合わせは同義語です。mysqlにはstraight_join句もあります。この句を使用して、joinの順序を制御できます。どのテーブルが外側のループでスキャンされ、どのテーブルが内側のループでスキャンされるかです。mysqlではwhere構文を使用してこれを制御することはできません。