完全外部結合と完全結合


84

クエリと例をいじって、結合をよりよく理解するだけです。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

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


2
はい、どちらのクエリでもSQL Server 2008R2で同じ結果が得られます。
cptSupermrkt 2012

回答:


103

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

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


3
完璧です、ありがとう。私が出くわした非常に多くのチュートリアルは、それらが同じであることに注意することなく、独自のスタイルに従ってこれらを使用しています。
cptSupermrkt 2012


37

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

  • LEFT OUTERJOINまたはLEFTJOIN

  • RIGHT OUTERJOINまたはRIGHTJOIN

  • FULL OUTERJOINまたはFULLJOIN

MSDNから

full outer joinまたはfull joinマッチが行われ、配置することができるどこの行を一致、両方のテーブルからすべての行を返すNULL一致する行が存在しない場所でS。


11

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.