8

重複の可能性:
明示的な SQL 結合と暗黙的な SQL 結合
複数のテーブルからの結合と選択の使用に違いはありますか?
SQL 結合: SQL ANSI 標準の将来 (どこと結合)?

JOIN と FROM 句で複数のテーブルを宣言することの違いは何ですか?

そのような:

SELECT *
FROM  table1 AS t1,
      table2 AS t2
WHERE t1.id = t2.id

に比べ:

SELECT *
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t2.id = t1.id
4

3 に答える 3

7

2 番目のバージョンは、明示的なJOIN結合条件を使用して標準化された SQL です。

句を使用した暗黙的な結合構文は非推奨の構文です (むしろ、悪いと見なされます)。部分的には、句を忘れてデカルト積が発生しWHEREやすいためです。WHERE

于 2012-04-20T14:52:37.690 に答える
2

新しい構文を使用する理由

他の人が述べているように、新しい構文が推奨される規則になっています。大規模なクエリでは、新しい構文の方が読みやすく、デバッグしやすく、結合条件が追加されていることを確認できます (偶発的なCROSS JOINS.

古い構文は非推奨ですか (内部結合用)?

ANSI によるとは限りません -- たとえ最初のものが好まれないとしても、両方とも有効です。ただし、古い構文で外部結合を実行することは推奨されていません。主な理由は、あいまいになる可能性があるためです。

「新しい構文を使用する」という見解はどの程度合意されていますか?

于 2012-04-20T15:04:54.920 に答える
1

どちらも同じように出力され、クエリの記述のバリエーションが異なります。

SELECT *
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t2.id = t1.id

使用している結合のタイプ(LEFT、OUTER、INNER)を明示的に指定しているため、推奨される結合方法です。

于 2012-04-20T14:55:41.703 に答える