LEFT OUTER JOIN または RIGHT OUTER JOIN と呼ばれる結合を見てきました。いくつかの場所で、LEFT JOIN または RIGHT JOIN を見たことがあります。私はこれに混乱しています。
2 日前に質問を投稿しましたが、ソリューションが提供するリンクを理解できません。
これらのタイプの結合はどちらも同じですか、それとも 2 つの間に何らかの違いがありますか?
両方に違いはありません。結合の視覚的表現を参照してください
彼らが引用した最初のリンクはあなたに与えます:
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
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
| | テーブル参照 {LEFT|RIGHT} [OUTER] JOIN テーブル参照 結合条件
| table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor
太字の行は、キーワード OUTER がオプションであることを明確に示しています。
MySQL構文でLEFT OUTER JOIN
は、LEFT JOIN
同一です:(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
LEFT / RIGHT JOINのキーワードは、オプションであることに注意してください。
LEFT結合とRIGHT結合は、どちらも外部結合です。キーワードを必要とするSQLにはいくつかの種類があると思いますがOUTER
、MySQLは必要ありません。つまり、LEFT JOIN
有効でない場合があります。