質問

LEFT JOIN LEFT OUTER JOIN の違いは何ですか?

役に立ちましたか?

解決

ドキュメントに従って: FROM(Transact-SQL )

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

キーワード OUTER はオプションとしてマークされています(角括弧で囲まれています)。この場合の意味は、指定するかどうかは関係ありません。 join句の他の要素もオプションとしてマークされていますが、 them を省略するともちろん違いが生じることに注意してください。

たとえば、 JOIN 句のtype-part全体はオプションです。この場合、 JOIN を指定しただけで、デフォルトは INNER です。 >。つまり、これは合法です:

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行の複数のテーブル?

ここに画像の説明を入力

他のヒント

  

質問に答えるために LEF JOINに違いはありません   とLEFT OUTER JOIN、それらはまったく同じですと言いました...

最上位には、主に3種類の結合があります:

  1. 内部
  2. 外部
  3. クロス

  1. INNER JOIN -両方のテーブルに存在する場合、データを取得します。

  2. 外部結合には 3 タイプがあります:

    1. LEFT OUTER JOIN -左のテーブルに存在する場合、データを取得します。
    2. RIGHT OUTER JOIN -右側のテーブルに存在する場合はデータを取得します。
    3. FULL OUTER JOIN -2つのテーブルのいずれかに存在する場合、データを取得します。
  3. CROSS JOIN は、その名前が示すように、すべてをすべてに結合する [n X m] を実行します。
    SELECT ステートメントの FROM 句で)結合するテーブルを単純にリストするシナリオと同様に、コンマを使用してテーブルを区切ります。


注意点:

  • 単に 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)を見ると、次のフレーズがあります:

&quot; INNER という言葉および OUTER はすべての形式でオプションです。 INNER がデフォルトです。 LEFT RIGHT 、および FULL は外部結合を意味します。&quot;

つまり、

LEFT JOIN LEFT OUTER JOIN は同じです

右結合および右外側結合は同じです

まだ答えを見つけようとしている人たちに貢献できることを願っています。

左結合左外部結合は1つであり、同じです。前者は後者の省略形です。同じことは、右結合および右外部結合の関係についても言えます。デモンストレーションは平等を示します。各クエリの動作例は、 SQL Fiddle を介して提供されています。このツールを使用すると、クエリを実際に操作できます。

指定

ここに画像の説明を入力

左結合および左外部結合

ここに画像の説明を入力

結果

ここに画像の説明を入力


右結合および右外部結合

ここに画像の説明を入力

結果

ここに画像の説明を入力

次の順序で結合を考える方が簡単だと思います:

  • CROSS JOIN-両方のテーブルのデカルト積。すべての参加はここから始まります
  • 内部結合-フィルターが追加された相互結合。
  • OUTER JOIN-要素が欠落しているINNER JOIN(LEFTまたはRIGHTテーブルから) 後で追加。

この(比較的)単純なモデルを見つけ出すまで、JOINSは常に少し黒っぽい芸術でした。今、彼らは完璧な意味を持っています。

これが混乱する以上に役立つことを願っています。

なぜLEFT / RIGHTとLEFT OUTER / RIGHT OUTERは同じですか?この語彙の理由を説明しましょう。 LEFT結合とRIGHT結合はOUTER結合の特定のケースであり、したがってOUTER LEFT / OUTER RIGHT以外にはならないことを理解してください。 OUTER結合は、OUTER結合の部分的結果であるLEFTおよびRIGHT結合とは対照的に、 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の結合構文では、外部はオプションです

これはmsdnの記事に記載されています: https: //msdn.microsoft.com/en-us/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種類のJOINがあります

  1. 内部:両方のテーブルにあるデータを取得します
    • JOINのみが内部結合を意味する
  2. 外側:3つのタイプがあります

    • LEFT OUTER--左のテーブルにのみ存在するデータを取得&amp;一致条件
    • RIGHT OUTER--右側のテーブルにのみ存在するデータを取得&amp;一致条件
    • FULL OUTER--いずれかまたは両方のテーブルに存在するデータを取得します
    • (LEFTまたはRIGHTまたはFULL)OUTER JOINは、&quot; OUTER&quot;と書かなくても書くことができます
  3. クロス結合:すべてをすべてに結合します

結合は3つのみです:

  • A)クロス結合=デカルト(例:表A、表B)
  • B)内部結合= JOIN(例:テーブルA結合/内部結合テーブル B)
  • 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」演算子も投稿したいと思います。

参加

  1. 内部結合 =結合

  2. 外部参加

    • LEFT OUTER JOIN = LEFT JOIN

    • RIGHT OUTER JOIN = RIGHT JOIN

    • 完全な外部結合=完全な結合

  3. クロスジョイン

SELF-JOIN :これは、まったく別の種類の結合ではありません。これは基本的に、上記の結合の1つを使用してテーブルをそれ自体に結合します。しかし、SQL Developerコミュニティの多くの人からこの用語を聞くので、JOINの議論のコンテキストで言及する価値があると感じました。

適用

  1. クロス適用-INNER JOINに似ています(ただし、Leftテーブルの各行についてRightテーブルで何かを計算できるという利点が追加され、一致する行のみが返されます)
  2. 外部適用-LEFT OUTER JOINに似ています(ただし、Leftテーブルの各行についてRightテーブルで何かを計算できるという利点を追加し、Leftからすべての行を返します右のテーブルでの一致に関係なく、テーブル)

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の外部/相互適用

APPLY演算子は、サブクエリで同じ計算を行うよりもパフォーマンスが向上するため、非常に有益だと思います。また、古いバージョンのSQL Serverの多くの分析関数の代わりにもなります。そのため、JOINSに慣れた後、SQL開発者の1人が次にAPPLY演算子を学習する必要があると考えています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top