1. ホーム
  2. sql

[解決済み] INNER JOIN ON vs WHERE句

2022-03-21 19:23:16

質問

簡単のために、関連するすべてのフィールドを 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)

で同じように動作するのでしょうか? MySQL ?

解決方法は?

INNER JOIN は、ANSI 構文で、使用する必要があります。

特に多くのテーブルを結合する場合、一般にこの方が読みやすいとされています。

また、簡単に OUTER JOIN 必要なときにいつでも

WHERE の構文は、よりリレーショナルなモデルを指向しています。

2つのテーブルの結果 JOIN ed は、結合列が一致する行のみを選択するフィルタが適用されたテーブルのデカルト積である。

を使うとわかりやすいですね。 WHERE の構文があります。

あなたの例に関しては、MySQL では(そして一般的な SQL では)これら 2 つのクエリは同義語です。

また、MySQLには STRAIGHT_JOIN 節があります。

この節を使用すると JOIN つまり、どのテーブルが外側ループでスキャンされ、どのテーブルが内側ループでスキャンされるかということです。

MySQLでは、この制御は WHERE の構文があります。