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
OUTERLEFT / RIGHT JOINのキーワードは、オプションであることに注意してください。
LEFT結合とRIGHT結合は、どちらも外部結合です。キーワードを必要とするSQLにはいくつかの種類があると思いますがOUTER、MySQLは必要ありません。つまり、LEFT JOIN有効でない場合があります。