LEFT JOIN
とLEFT OUTER JOIN
の違いは何ですか?
ドキュメントに従って: FROM(Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
キーワードOUTER
はオプションとしてマークされています(角括弧で囲まれています)。この特定のケースでは、OUTER
を指定してもしなくても違いはありません。結合句の他の要素もオプションとしてマークされているが、themoutwill違いを生みます。
たとえば、JOIN
句のtype-part全体はオプションです。この場合、INNER
を指定しただけの場合、デフォルトはJOIN
です。言い換えれば、これは合法です:
SELECT *
FROM A JOIN B ON A.X = B.Y
同等の構文のリストは次のとおりです。
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
また、この他のSOの質問に残した答えを見てください。 SQLの左結合vs FROM行の複数のテーブル? 。
あなたの質問に答えるために LEFT JOINとLEFT OUTER JOINの間に違いはありません、それらは全く同じです それは言った...
INNER JOIN - 両方のテーブルにデータが存在する場合はデータをフェッチします。
OUTER JOIN は 3 の型です。
LEFT OUTER JOIN
- 左側のテーブルに存在する場合はデータを取得します。RIGHT OUTER JOIN
- 右側のテーブルにデータが存在する場合はデータを取得します。FULL OUTER JOIN
- 2つのテーブルのどちらかに存在する場合はデータをフェッチします。 CROSS JOIN は、その名のとおり、すべてをすべてに結合する[n X m]
を実行します。
結合するテーブルを単純に(FROM
ステートメントのSELECT
節に)リストし、それらを区切るためにコンマを使用するシナリオと同様です。
注意すべき点:
JOIN
に言及したばかりの場合、デフォルトではINNER JOIN
です。OUTER
結合はLEFT
|でなければなりません。 RIGHT
| FULL
あなたは単にOUTER JOIN
と言うことはできません。OUTER
キーワードを削除して、LEFT JOIN
、RIGHT JOIN
、またはFULL JOIN
と入力するだけです。より良い方法でこれらを視覚化したい人のために、このリンクに行きなさい: SQL結合の視覚的説明
左結合と左外結合の違いは何ですか?
何もない 。 LEFT JOIN
とLEFT OUTER JOIN
は同等です。
私はPostgreSQL DBAです。外部結合の違いと外部結合の違いの違いを理解することができるかぎり、インターネット全体でかなりの議論があるトピックです。今日まで私はこれら2つの違いを見たことがありませんでした。だから私はさらに進んで、それらの違いを見つけようとします。最後に私はそれに関する全体のドキュメントを読みました、そして私はこれに対する答えを見つけました、
ですから、(少なくともPostgreSQLの)ドキュメンテーションを見ると、このフレーズが見つかります。
"INNER
およびOUTER
はすべての形式でオプションです。INNER
がデフォルトです。LEFT
、RIGHT
、およびFULL
は外部結合を意味します。
言い換えれば、
LEFT JOIN
とLEFT OUTER JOIN
は同じです
RIGHT JOIN
とRIGHT OUTER JOIN
は同じです
私はそれがまだ答えを見つけようとしている人々のための貢献になることを願っています。
Left Join
とLeft Outer Join
は1で、 同じ です。前者は後者の省略形です。 Right Join
とRight Outer Join
の関係についても同じことが言えます。デモンストレーションは平等を説明します。各クエリの動作例はSQL Fiddleで提供されています。このツールは、クエリを実際に操作するためのものです。
与えられた
結果
Right Join および Right Outer Join
結果
次の順序で結合を考えるのは簡単です。
私がこの(比較的)単純なモデルを考え出すまで、JOINSは常にもう少し黒い芸術でした。今、彼らは完璧に理にかなっています。
これが混乱する以上に役立つことを願っています。
LEFT/RIGHTとLEFT OUTER/RIGHT OUTERが同じなのはなぜですか?なぜこの語彙を説明しましょう。左結合と右結合はOUTER結合の特定のケースであり、したがってOUTER LEFT/OUTER RIGHT以外にはあり得ないことを理解してください。 OUTER結合の結果がPARTIALであるLEFT結合およびRIGHT結合とは対照的に、OUTER結合はFULL OUTERとも呼ばれます。確かに:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
これらのオペレーションにエイリアスがある理由と、3つのケース(INNER、OUTER、CROSS)しか存在しないことが明らかになりました。 OUTERの2つのサブケース付き。語彙、教師がこれを説明する方法、および上記のいくつかの回答により、多くの場合、さまざまな種類の結合があるように見えます。しかし、それは実際にはとても簡単です。
あなたの質問に答えるために
SQL Serverでは構文 _ outer _ を結合します
これはmsdnの記事で言及されています: https://msdn.Microsoft.com/ja-jp/library/ms177634(v=sql.130).aspx
そのため、以下のリストは、 _ outer _ の有無にかかわらず結合等価構文を示しています。
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
他の同等の構文
INNER JOIN => JOIN
CROSS JOIN => ,
強く推奨Dotnet Mob Artice: Sql Serverに参加
主に3つのタイプがあります
外:3種類あります
クロス結合:すべてをすべてに結合します
C)外部参加:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join
助けになれば幸いです。
統語的な砂糖は、結合が内側のものではないことをカジュアルな読者にとってより明白にします。
この質問のコンテキストで、2つの「APPLY」演算子も投稿したいと思います。
結合:
INNER JOIN= JOIN
OUTER JOIN
LEFT OUTER JOIN = LEFT JOIN
右外部結合=右結合
FULL OUTER JOIN = FULL JOIN
CROSS JOIN
SELF-JOIN:これは、厳密に別の種類の結合ではありません。これは基本的に、上記の結合の1つを使用してテーブルをそれ自体に結合します。しかし、SQL Developerコミュニティの多くの人からこの用語を聞くので、JOINの議論のコンテキストで言及する価値があると感じました。
適用:
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
実際の例、SQLでOUTER/CROSS APPLYを使用する場合
サブクエリで同じ計算を行うよりもパフォーマンスが向上するため、APPLY演算子は非常に有益です。また、古いバージョンのSQL Serverの多くの分析関数の代わりにもなります。そのため、JOINSに慣れた後、SQL開発者の1人が次にAPPLY演算子の学習を試みる必要があると思います。