web-dev-qa-db-ja.com

フルアウタージョインvs.フルジョイン

クエリとサンプルをいじって、結合の理解を深めてください。 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

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

68
CptSupermrkt

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

詳しくは Wikipediaの記事 をご覧ください。

84
John Woo

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

  • LEFT OUTER JOINまたはLEFT JOIN

  • RIGHT OUTER JOINまたはRIGHT JOIN

  • FULL OUTER JOINまたはFULL JOIN

MSDN から

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

28
Lion

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

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

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

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

8
MarvinM

TableA.name = TableB.nameを削除すると、デカルト積が表示されます。

0