これら両方の結合は私に同じ結果を与えるでしょう:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
パフォーマンスまたは他の点でステートメント間に違いはありますか?
異なるSQL実装間で違いますか?
これらは機能的には同等ですが、特にクエリに他の結合タイプ(つまりLEFT
またはRIGHT
またはCROSS
)が含まれている場合は、INNER JOIN
の方が読みやすくなります。
いいえ、違いはありません。純粋な 構文糖 です。
内部結合=結合 :
INNER JOINは指定しない場合のデフォルト _ Word JOINを使用するときの型です。
LEFT OUTER JOINまたはRIGHT OUTER JOINを使用することもできます。この場合、Word OUTERはオプションですが、CROSS JOINを指定することもできます。
OR
内部結合の場合、構文は次のとおりです。
SELECT ...
表Aより
[INNER] JOIN TableB(言い換えれば、 "INNER"キーワードはオプションです - 結果はそれがあってもなくても同じです)
OUTER JOINs
と同様に、単語"OUTER"
はオプションです。 LEFT
を"OUTER" JOIN
にするのはRIGHT
またはJOIN
キーワードです。
しかし、何らかの理由で私は"OUTER"
のように常にLEFT OUTER JOIN
を使い、決してLEFT JOIN
を使いません、しかし私は決してINNER JOIN
を使いません、むしろ"JOIN"
を使います:
SELECT ColA, ColB, ...
FROM MyTable AS T1
JOIN MyOtherTable AS T2
ON T2.ID = T1.ID
LEFT OUTER JOIN MyOptionalTable AS T3
ON T3.ID = T1.ID
異なるSQL実装間で違いますか?
はい、 Microsoft Access はjoin
だけを許可しません。 inner join
が必要です。
他の答えはすでに述べているように、あなたの例には違いはありません。
関連する文法は ここに文書化されている
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
それを示すことはすべてオプションです。このページはさらに明確にしています
INNER
一致するすべての行のペアが返されることを指定します。両方のテーブルから一致しない行を破棄します。 結合タイプが指定されていない場合、これがデフォルトの になります。
文法はまた、INNER
isが必要な場合が1回あることを示しています。結合ヒントを指定するとき.
以下の例をご覧ください
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;