構文を除いて、小さなスニペットの場合、それらはまったく同じように機能します。ただし、可能であれば、常にANSI-JOINを使用して新しいクエリを記述してください。
意味的には、コンマ表記を使用して2つのテーブル間でデカルト積を生成します。つまり、テーブルAのすべてのレコードとテーブルBのすべてのレコードの行列を生成するため、4レコードと6レコードの2つのテーブルはそれぞれ24レコードを生成します。 WHERE句を使用すると、このデカルト積から実際に必要な行を選択できます。ただし、MySQLは実際にはこの巨大なマトリックスを追跡して作成しませんが、意味的にはこれが意味します。
JOIN構文は、テーブルの相互作用をより明確に定義するANSI規格です。 ON
を置くことによって JOIN
の横の句 、2つのテーブルをリンクするものが明確になります。
機能的には、2つのクエリに対して同じように実行されます。他の[OUTER]
を使い始めると違いが生じます JOINタイプ。
特にMySQLの場合、コンマ表記違いが1つあります
STRAIGHT_JOINはJOINに似ていますが、左側のテーブルが常に右側のテーブルの前に読み取られる点が異なります。これは、結合オプティマイザがテーブルを間違った順序で配置する(少数の)ケースに使用できます。
ただし、賢明ではありません この違いを利用するために。