Die Reihenfolge der Operationen hat erheblichen Einfluss auf die Ergebnisse von LEFT-, RIGHT- und FULL OUTER JOINs.
Kommutativität und Assoziativität: Nicht garantiert
<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>
ist nicht garantiert dasselbe wie:
<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>
Szenarien, in denen Ordnung entscheidend ist
Die Verknüpfungsreihenfolge ist entscheidend, wenn es um AND
Bedingungen geht, die NULL
Werte oder Funktionen betreffen, die auf NULLs
reagieren (wie COALESCE()
). Zum Beispiel:
<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>
Diese Abfrage liefert ein anderes Ergebnis als:
<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>
Im Gegensatz zu Outer-Joins hat die Reihenfolge von INNER JOINs keinen Einfluss auf die endgültige Ergebnismenge. A JOIN B
und B JOIN A
führen zu identischen Ergebnissen (vorausgesetzt, entsprechende Anpassungen der SELECT
-Klausel, z. B. SELECT a.*, b.*, c.*
).
Das obige ist der detaillierte Inhalt vonBeeinflusst die Verknüpfungsreihenfolge die Ergebnisse von SQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!