1891

LEFT JOINとはどう違いLEFT OUTER JOINますか?

4

12 に答える 12

2560

ドキュメントによると:FROM(Transact-SQL)

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

キーワードOUTERはオプションとしてマークされています(角括弧で囲まれています)。この特定のケースでは、指定するかどうかにOUTER違いはありません。join句の他の要素もオプションとしてマークされていますが、それらを除外すると違いが生じることに注意してください。

たとえば、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の左結合とFROM行の複数のテーブル?

ここに画像の説明を入力してください

于 2009-01-02T08:51:16.853 に答える
784

あなたの質問に答えるために、LEFT JOIN と LEFT OUTER JOIN の間に違いはありません

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

  1. インナー
  2. アウター
  3. クロス

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

  2. OUTER JOINには3 つのタイプがあります。

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


注意点:

  • あなたが言及JOINした場合、デフォルトではINNER JOIN.
  • OUTER結合はLEFT|でなければなりません。RIGHT| | FULL簡単に言うことはできませんOUTER JOIN
  • OUTERキーワードを削除してLEFT JOIN、 またはRIGHT JOINまたはと言うだけFULL JOINです。

これらをより良い方法で視覚化したい場合は、次のリンクにアクセスしてください: SQL 結合の視覚的な説明

于 2010-12-09T18:05:03.263 に答える
416

左結合と左外側結合の違いは何ですか?

何もありませんLEFT JOINLEFT OUTER JOINは同等です。

于 2009-01-02T08:31:46.567 に答える
77

Left JoinLeft Outer Join同じものです。前者は後者の省略形です。Right JoinandのRight Outer Join関係についても同じことが言えます。デモンストレーションは平等を示します。各クエリの実際の例は、SQL Fiddleを介して提供されています。このツールを使用すると、クエリを実際に操作できます。

与えられた

ここに画像の説明を入力

左結合左外部結合

ここに画像の説明を入力

結果

ここに画像の説明を入力


右結合右外部結合

ここに画像の説明を入力

結果

ここに画像の説明を入力

于 2015-05-22T17:09:47.590 に答える
73

私は PostgreSQL DBA です。外部結合と外部結合以外の違いを理解できる限り、インターネット全体でかなりの議論がなされているトピックです。今日まで、私はこれら 2 つの違いを見たことがありませんでした。そこで私はさらに進んで、それらの違いを見つけようとしました。最後に、それに関するドキュメント全体を読み、これに対する答えを見つけました。

したがって、ドキュメント (少なくとも PostgreSQL) を見ると、次のフレーズを見つけることができます。

「単語INNEROUTERはすべての形式でオプションINNERです。デフォルトはLEFT、、、RIGHTおよびFULL外部結合を意味します。」

言い換えれば、

LEFT JOINLEFT OUTER JOIN同じです

RIGHT JOINRIGHT OUTER JOIN同じです

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

于 2010-08-30T02:33:57.850 に答える
51

Join は、次の順序で考えるとわかりやすいと思います。

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

この (比較的) 単純なモデルを理解するまで、JOINS は常に黒魔術のようなものでした。今では完全に理にかなっています。

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

于 2011-12-29T21:01:36.220 に答える
39

LEFT/RIGHT と LEFT OUTER/RIGHT OUTER が同じなのはなぜですか? この語彙の理由を説明しましょう。LEFT および RIGHT 結合は OUTER 結合の特定のケースであるため、OUTER LEFT/OUTER RIGHT 以外の何物でもないことを理解してください。OUTER 結合は、OUTER 結合のPARTIAL結果である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)

これらの操作にエイリアスがある理由は明らかであり、INNER、OUTER、CROSS の 3 つのケースしか存在しないことも明らかです。OUTER用サブケース2個付き。語彙、教師がこれを説明する方法、および上記のいくつかの回答から、さまざまな種類の結合があるように見えることがよくあります。しかし、実際には非常に単純です。

于 2014-04-17T21:08:43.510 に答える
37

あなたの質問に答えるために

Sql Server 結合構文では、 OUTERはオプションです

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 : Joins in Sql Server ここに画像の説明を入力

于 2016-06-25T04:05:20.710 に答える
21

JOINには主に3つのタイプがあります

  1. 内部: 両方のテーブルに存在するデータをフェッチします
    • JOIN のみが INNER JOIN を意味します
  2. アウター:3タイプ

    • LEFT OUTER - - 左側のテーブルにのみ存在するデータと一致する条件をフェッチします
    • RIGHT OUTER - - 右側のテーブルにのみ存在するデータと一致する条件を取得します
    • FULL OUTER - - いずれかまたは両方のテーブルに存在するデータをフェッチします
    • (LEFT or RIGHT or FULL) OUTER JOIN は "OUTER" を書かなくても書ける
  3. Cross Join: すべてのものをすべてのものに結合します

于 2012-01-18T12:29:02.580 に答える
18

シンタックスシュガーは、結合が内部のものではないことをカジュアルな読者にもっと明白にします。

于 2009-01-02T08:54:50.357 に答える