1

次のようなクエリがあります。

SELECT
    *
FROM
    table1,
    table2

私はこれが次のものといくらか同等であることを知っています:

SELECT
    *
FROM
    table1
INNER JOIN
    table2
ON ???

しかし、結合の結果の ON 句はどうなるでしょうか?

アップデート

SSMSでいくつかのテストを行った後、ここに私の発見があります

SELECT * FROM table1,table2

と同じ実行計画と同じレコードを与える

SELECT * FROM table1 INNER JOIN table2 ON 1=1

そして同じこと

SELECT * FROM table1 CROSS JOIN table2
4

3 に答える 3

1

それらの関係を定義する列。

SELECT  *
FROM  table1 
      INNER JOIN table2
           ON table1.ID = table2.ID

実際にあなたが示したクエリはそうではありませんequal。最初のものは、両方のテーブルのすべてのレコードのデカルト積を生成します。つまり、CROSS JOIN.

于 2012-11-02T15:25:45.050 に答える
1
SELECT
    *
FROM
    table1,
    table2

次と同等です。

SELECT 
    * 
FROM 
    table1
CROSS JOIN 
    table2

CROSS JOIN には ON ステートメントはありません。CROSS JOIN をフィルタリングする必要がある場合は、それを WHERE 句に入れます。

WHERE table1.DateCreated <= table2.DateModified
于 2012-11-02T15:31:24.027 に答える
0

SSMSでいくつかのテストを行った後、ここに私の発見があります

SELECT * FROM table1,table2

と同じ実行計画と同じレコードを与える

SELECT * FROM table1 INNER JOIN table2 ON 1=1

そして同じこと

SELECT * FROM table1 CROSS JOIN table2
于 2012-11-30T19:19:02.727 に答える