92

結合をよりよく理解するために、クエリと例をいじってみてください。SQL Server 2008では、次の2つのクエリで同じ結果が得られることに気づきました。

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name

これらはまったく同じアクションを実行して同じ結果を生成しますか、それともより複雑な例で異なる結果に遭遇しますか?これは単に交換可能な用語ですか?

4

3 に答える 3

119

実際、それらは同じです。LEFT OUTER JOINと同じでLEFT JOINあり、RIGHT OUTER JOINと同じRIGHT JOINです。から比較する方が有益な方法INNER Joinです。

詳細については、このウィキペディアの記事を参照してください。

于 2012-07-30T03:09:21.667 に答える
39

Microsoft®SQLServer™2000は、FROM句で指定された外部結合に次のSQL-92キーワードを使用します。

  • LEFTOUTERJOINまたはLEFTJOIN

  • RIGHTOUTERJOINまたはRIGHTJOIN

  • FULLOUTERJOINまたはFULLJOIN

MSDNから

またはは両方のテーブルからすべての行full outer joinfull join返し、一致する可能性のある場所で行を一致させ、NULL一致する行が存在しない場所にsを配置します。

于 2012-07-30T03:13:06.503 に答える
14

一部のデータベースがOUTERキーワードを認識するのは事実です。しない人もいます。認識される場合、通常はオプションのキーワードです。ほとんどの場合、FULLJOINとFULLOUTERJOINはまったく同じことを行います。(私は彼らがそうしない例を考えることができません。他の誰かがそれを考えることができますか?)

「意味がないのに、なぜキーワードになるのか」と疑問に思うかもしれません。答えはプログラミングスタイルに要約されます。

昔は、プログラマーはコードをできるだけコンパクトにするように努めていました。すべての文字は、より長い処理時間を意味しました。1、2、および3文字の変数を使用しました。2桁の年を使用しました。不要な空白をすべて削除しました。一部の人々はまだそのようにプログラムします。もう処理時間ではありません。それは高速コーディングに関するものです。

現代のプログラマーは、より記述的な変数を使用し、コードにさらに多くのコメントとドキュメントを入れることを学んでいます。OUTERのような余分な単語を使用して、コードを読んだ他の人がコードを理解しやすくなるようにします。あいまいさが少なくなります。このスタイルは、そのコードを維持しなければならない将来の人々にとってはるかに読みやすく、親切です。

于 2015-11-03T22:31:45.433 に答える