2013-03-15 12 views
38

LEFT OUTER JOINまたはRIGHT OUTER JOINと呼ばれる結合が見られました。いくつかの場所では、LEFT JOINまたはRIGHT JOINを見ました。私はこれで混乱しています。外部ジョインと左ジョインは同じままですか?

2日前にquestionを投稿しましたが、解決策が提供するリンクを理解できません。

これらのタイプの結合は同じですか、または両者の間に違いがありますか?

+10

彼らは同じです。 – EmCo

+5

LEFT JOINはLEFT OUTER JOINと同じです。 'OUTER'キーワードは* optional *です。 –

+0

@JW。私はあなたが示唆したリンクを見ました。それは非常に有用です。しかし、それはまだすべての疑問を果たさなかった。 http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – PSR

答えて

51

両方に違いはありません。 LEFT OUTER JOINLEFT JOINが同一である、MySQLの構文でvisual represenation of joins

+0

この記事はちょうど素晴らしいです!ありがとう! –

2

参照:LEFT/RIGHTの結合にOUTERキーワードは任意であること(http://dev.mysql.com/doc/refman/5.0/en/join.htmlから)

| table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition 
| table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor 

注意。

左および右ジョインは両方とも外側ジョインです。私はOUTERというキーワードを必要とするかもしれないいくつかのSQLの味があると信じていますが、MySQLはそうではありません。つまり、時にはLEFT JOINが有効でない可能性があります。

18

、彼らが引用された最初のリンクはあなたに与えます:

INNER JOINは:両方のテーブルの一致があるときの行を返します。

LEFT JOIN/LEFT OUTER JOIN:右のテーブルに一致するものがなくても、左のテーブルからすべての行を返します。

RIGHT JOIN/RIGHT OUTER JOIN:左側の表に一致するものがなくても、右側の表からすべての行を戻します。

FULL JOIN/FULL OUTER JOIN/OUTER JOIN:いずれかのテーブルに一致するものがある場合は、行を返します。

SELF JOIN:テーブルが2つのテーブルであるかのように、それ自身にテーブルを結合するために使用され、SQL文で少なくとも1つのテーブルの名前を一時的に変更します。

CARTESIAN JOIN:2つ以上の結合テーブルからレコードセットのデカルト積を返します。

self joinは実際にはspecial joinではありません。あなた自身がテーブルに加わることができるという事実だけを反映しています。そうすることで、同じステートメント内に複数回現れるという事実に対処するために別名を付ける必要があります。

cartesian joinは、制限条件なしでinner joinと考えることができます。または、inner joinを追加制限付きのcartesian join(結合条件)として表示することができます。

3

あなたがJOINのマニュアルページを見ればあなたが次の行が表示されます:

join_table: 

    table_reference [INNER | CROSS] JOIN table_factor [join_condition] 

    | table_reference STRAIGHT_JOIN table_factor 

    | table_reference STRAIGHT_JOIN table_factor ON conditional_expr 

| table_reference {LEFT | RIGHT} [OUTER]は

| table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor 

table_referenceのjoin_conditionをJOIN太線は明らかキーワードOUTERはオプションであることを示しています。

+0

@Luv - 最後の行はあなたの書式設定には意味がありません! –

1

私はSQL Serverで作業しています。私の使用法や経験によれば、LEFT JOINLEFT OUTER JOINの間には全く違いはありません。 RIGHT JOINRIGHT OUTER JOINについても同様です。 SQL ServerでキーワードLEFT JOINを使用すると、LEFT OUTER JOINのみを意味します。 私の見解では、すべてのデータベースエンジンで共通のジェネリックルールがあります。

see herehere

関連する問題