3

クエリがある場合:

SELECT * 
FROM Table1 a
Inner Join Table2 b on a.Key = b.Key
Inner Join Table3 c on a.Key = b.Key

何が起こっている?私は最近、いくつかのコードでこのエラーを発生させました (代わりに c on on に参加したかったa.Key = c.Key)。それを発見して修正したところ、実行して結果を得ることが許可されていたことに驚きました。

このようなクエリが呼び出されるとどうなるか、興味がありました。私が知る限り、(table1 join table2) と table3 の間でクロス ジョインを実行しますか?

4

1 に答える 1

4

これは常に真である条件であるため、次と同等です。

 SELECT * FROM Table1 a 
 Inner Join Table2 b on a.Key=b.Key
 Inner Join Table3 c on 1=1
   ;

たとえば、(t1 join t2) * t3 のデカルト積。

于 2012-12-12T20:29:08.507 に答える