運算順序會顯著影響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中文網其他相關文章!