4

違いはありますか

SELECT *
FROM TABLE_A a
JOIN TABLE_B b
  ON a.propertyA = b.propertyA        

そしてクエリ

SELECT * from TABLE_A a, TABLE_B b where a.propertyA=b.propertyA.
4

3 に答える 3

5

INNER JOIN最初の構文で使用するANSI(SQL-92)構文です。特に多くのテーブルを結合する場合は、一般的に読みやすいと見なされます。

SQL-89WHERE syntax )は、よりリレーショナルなモデル指向です。2つのテーブルが結合された結果は、結合列が一致する行のみを選択するフィルターが適用されるテーブルのデカルト積です。

WHERE構文を使用すると、これを簡単に確認できます。

ANSI句をなんらかの方法で省略するONとエラーが生成されるのに対し、句の条件を省略すると古いタイプの結合でwhereはエラーメッセージが生成されず、デカルト積が生成されるため、join型を使用します。

于 2012-09-10T05:52:29.990 に答える
2

2つの例は同じです。どちらもINNERJOIN操作を実行し(2番目の例ではJOINだけであっても)、基本的にON句に関連する一致する結果を含むすべての行を返します。

私の推測では、JOINおよびINNER JOIN操作は、その特定の目的のために設計されているため、少し高速ですが、SELECTステートメントを変更してさらに多くのことを実行できます。

于 2012-09-10T05:53:10.440 に答える
0

「結合」バージョンは約20年前のものであり、結果のフィルタリングに使用される述語ではなく、結合に使用される述語を明確に識別するため、推奨されています。
また、一緒に使用すると外部結合も可能になりleft joinます(table_bに一致する行がない場合でも、table_aの行を取得できます)。

「コンマ」バージョンでは、外部結合は許可されていません(table_bに一致する行がない場合、table_aの行は取得されません)

于 2012-09-10T05:51:53.140 に答える