これらの結合はどちらも同じ結果になります。
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
対
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
パフォーマンスなどのステートメントに違いはありますか?
異なるSQL実装間で異なりますか?
これらの結合はどちらも同じ結果になります。
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
対
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
パフォーマンスなどのステートメントに違いはありますか?
異なるSQL実装間で異なりますか?
回答:
これらは機能的には同等ですがINNER JOIN
、特にクエリに他の結合タイプ(LEFT
またはRIGHT
orまたはCROSS
)が含まれている場合は、少し読みやすくなります。
いいえ、違いはありません、純粋な構文糖。
INNER
この定義に該当すると私は信じています。
INNER
しないことを示しています。私が知っているすべての人にとって、ここでの回答によってそれが解決されなかった場合、それはJOIN
よく意味するかもしれLEFT JOIN
ません。
INNER JOIN = JOIN
JOIN という単語を使用するときにタイプを指定しない場合は、INNER JOINがデフォルトです。
LEFT OUTER JOINまたはRIGHT OUTER JOINを使用することもできます。この場合、OUTERという単語はオプションですが、CROSS JOINを指定することもできます。
または
内部結合の場合、構文は次のとおりです。
SELECT ...
FROM TableA
[INNER] JOIN TableBを選択します(言い換えると、「INNER」キーワードはオプションです -結果はそれがあってもなくても同じです)
異なるSQL実装間で異なりますか?
はい、Microsoft Accessはだけを許可していませんjoin
。必要inner join
です。
同様OUTER JOINs
に、単語"OUTER"
はオプションです。それはだLEFT
かRIGHT
作るキーワードJOIN
ANを"OUTER" 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
他の答えはすでに述べているように、あなたの例に違いはありません。
文法の関連するビットはここに文書化されています
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
すべてがオプションであることを示します。このページでは、
INNER
一致するすべての行のペアが返されることを指定します。両方のテーブルから一致しない行を破棄します。結合タイプが指定されていない場合、これがデフォルトです。
文法はまた、INNER
が必要な場合があることを示しています。結合ヒントを指定する場合。
以下の例をご覧ください
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;