CROSS JOINは、2つのテーブル間で完全なデカルト積を実行するSQL演算子です。デカルト積であるため、操作中の条件はありません。 、結果を制限できるのは、一部のフィルタリング操作(WHERE条件)のみです。
JOIN(INNERおよびOUTER JOIN、つまり)演算子は、演算子のON部分で表現されたフィルタリング演算子を含む単純な直積です(実際、SQLの元の構文では、JOIN演算子はなく、単に「comma」です。常にWHERE部分で表現される結合条件を持つ製品を示す表記)。
例:
「古い」表記:
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute
「モダン」表記と同等:
SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute
一方、デカルト積の場合:
「古い」表記:
SELECT ...
FROM table1 t1, table2 t2
「モダン」表記と同等:
SELECT ...
FROM table1 t1 CROSS JOIN table2 t2
つまり、条件を必要とするCROSS JOINは、実際にはある種のINNERJOINです。