簡単にするために、関連するすべてのフィールドが であると仮定しますNOT NULL
。
できるよ:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
あるいは:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)
これら 2 つは で同じように動作しますかMySQL
?
ベストアンサー1
INNER JOIN
使用すべき ANSI 構文です。
一般的に、特に多数のテーブルを結合する場合は、より読みやすくなると考えられています。
OUTER JOIN
必要に応じていつでも簡単に交換できます。
構文WHERE
はよりリレーショナル モデル指向です。
2 つのテーブル ed の結果は、JOIN
結合列が一致する行のみを選択するフィルターが適用されたテーブルの直積です。
構文で見るとこれが分かりやすくなりますWHERE
。
あなたの例に関して言えば、MySQL (および一般的な SQL) では、これら 2 つのクエリは同義語です。
また、MySQL にもSTRAIGHT_JOIN
句があることに注意してください。
JOIN
この句を使用すると、外側のループでどのテーブルをスキャンし、内側のループでどのテーブルをスキャンするかという順序を制御できます。
MySQL ではWHERE
構文を使用してこれを制御することはできません。