INNER JOIN ON と WHERE 句 質問する

INNER JOIN ON と WHERE 句 質問する

簡単にするために、関連するすべてのフィールドが であると仮定します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構文を使用してこれを制御することはできません。

おすすめ記事