13

私はよくこのようなSQLを書く人を見かけます:

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2)

私自身は簡単に書いています:

SELECT * from TableA LEFT JOIN TableB ON (ID1=I2)

私にとって「OUTER」キーワードはラインノイズのようなものです。追加情報は追加されず、SQLが乱雑になるだけです。私が知っているほとんどのRDBMSではオプションですらあります。それで...なぜ人々はまだそれを書いているのですか?癖ですか?移植性?(とにかくあなたのSQLは本当に移植可能ですか?)私が気付いていない他の何か?

4

8 に答える 8

14

OUTERあなたが書いているように、すべてのOUTER結合はまたはであり、相互にすべてLEFTまたは結合はであるため、実際には不要です。つまり、構文的には、ほとんどの場合、ノイズです。ISOSQLでもオプションです。なぜ人々がそれを使うのかというと、左か右のキーワードがすでにそう言っているとしても、参加を主張する必要があると感じる人もいると思います。そのことについては、また余分です!RIGHTLEFTRIGHTOUTEROUTERINNER

于 2009-11-16T11:34:58.037 に答える
7

はい

それは私の意見では物事をより明確にするだけです-あなたがあなたの意図をより明確でより明白に述べるほど、より良いです(特に後であなたのコードを読んで理解しようとする誰かにとって)。

しかし、それは私の意見です-それは技術的に必要ではないので、あなたはそれを使うことができます-またはそれを残すことができます。

于 2009-11-16T11:34:05.793 に答える
3

いいえ、使用します

  • 加入
  • 左参加
  • 右参加
  • フルアウタージョイン
  • クロスジョイン

私にはあいまいさはありません。

于 2009-11-16T12:10:33.523 に答える
3

Stackoverflowで数か月間私に示されたのは、SQLやリレーショナルデータベースにまったく触れたことがない人がSQLを作成および/または維持している量です。

そのため、コードを見るときに、次のプログラマーがより明確になることができると思います。

于 2009-11-16T14:06:06.427 に答える
1

それは単に好みの問題です、私は人々がそれがより読みやすいコードにつながると思うのでそれを使うと思います。たとえば、私SELECT ... FROM table AS tよりも読みやすいように見えるので、オプションのASキーワードを使用することを好みSELECT ... FROM table tます。

于 2009-11-16T11:31:29.607 に答える
1

「内部結合」、「左結合」、「右結合」、および「完全外部結合」を使用しています。「内部」なしで「参加」すると、私にはやや曖昧になります。「左」と「右」は自己記述的であり、「完全」は特別な構文に値するような種類の獣です:)

于 2009-11-16T11:44:15.530 に答える
0

OUTER私は自分でキーワードを使用します。私はそれが単なる好みの問題であることに同意しますが、それを省略すると少しずさんな感じがしますが、キーワードを省略しINNERたり(ずさんな)、SQLキーワードを小文字で書く(非常にずさんな)ほど悪くはありません。

于 2009-11-16T13:55:22.360 に答える
0

とにかく2009年にはポータブルSQLのようなものはないと思います...ある時点で、DBMS固有のステートメントを作成する必要があります(上位N行の取得など)。

個人的には、JOIN構文が冗長であることに気付き、代わりにテーブル名をコンマで区切ります。

于 2009-11-16T14:06:43.867 に答える