リンク @Gratzy 提供 役に立ちます
ON 句と WHERE 句の条件の違いは、確かに灰色です。
INNER JOINS の場合、それらは同等です。 OUTER JOINS の場合、ON 条件が評価された後に WHERE 句が概念的に適用されるという理解は正しいです。
しかし、多くの場合、その違いは機能性よりも意図によるものです。多くの場合、ON 条件と WHERE 句の間に意味上の違いがあります。
たとえば、古いバージョンの SQL Server では、*=
を使用して、WHERE 句の条件を使用して ON 構文を実際に実装していました。 または =*
LEFT または RIGHT 結合を暗示する構文 (場合によっては、LEFT および RIGHT JOIN と同等の結果が奇妙に微妙に異なることにつながります)
一般に、私のアドバイスは、ON 句で適切なキー フィールドを使用して、レコードが互いにどのように関連付けられるかというロジックに基づいてレコードを結合することです。 WHERE 句を使用して、この結果セットを段階的に制限するフィルター条件を適用します。