ホームページ >データベース >mysql チュートリアル >結合順序は SQL クエリの結果に影響しますか?
演算の順序は、LEFT、RIGHT、および FULL OUTER JOIN の結果に大きく影響します。
可換性と結合性: 保証されません
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id</code>
は、
と同じであることは保証されません。<code class="language-sql">a LEFT JOIN c ON c.ac_id = a.ac_id LEFT JOIN b ON b.ab_id = a.ab_id</code>
秩序が重要なシナリオ
結合順序は、AND
の値または NULL
に敏感な関数 (NULLs
など) を含む COALESCE()
条件を処理するときに重要になります。 例:
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id</code>
このクエリは次とは異なる結果を返します:
<code class="language-sql">a LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id LEFT JOIN b ON b.ab_id = a.ab_id</code>
外部結合とは異なり、INNER JOIN の順序は最終的な結果セットに影響しません。 A JOIN B
と B JOIN A
は同じ結果を生成します (SELECT
節に適切な調整が行われていると仮定します (例: SELECT a.*, b.*, c.*
)。
以上が結合順序は SQL クエリの結果に影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。