运算顺序会显着影响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中文网其他相关文章!