Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine MySQL-Abfrage mit einem Syntaxfehler bei FULL OUTER JOIN fehl?
Das Fehlen von FULL OUTER JOIN in MySQL und die Problemumgehung
Problem:
Eine MySQL-Abfrage mit FULL OUTER JOIN
führte zu einem Syntaxfehler. Die Abfrage hat versucht, mehrere Tabellen mit FULL OUTER JOIN
zu verknüpfen, einer Syntax, die scheinbar korrekt ist, aber von MySQL nicht unterstützt wird.
Lösung:
MySQL unterstützt FULL OUTER JOIN
nicht direkt. Die Lösung besteht darin, diese Funktionalität mithilfe einer Kombination aus LEFT JOIN
und RIGHT JOIN
mit UNION
-Anweisungen zu emulieren.
Emulierung von FULL OUTER JOIN:
Für zwei Tabellen (t1
und t2
) wird ein FULL OUTER JOIN
wie folgt repliziert:
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id;</code>
Dieser Ansatz erstreckt sich auf mehrere Tabellen. Für drei Tabellen (t1
, t2
, t3
) wäre das Äquivalent:
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id RIGHT JOIN t3 ON t2.id = t3.id;</code>
Diese rekursive Anwendung von LEFT JOIN
, RIGHT JOIN
und UNION
ahmt effektiv das Verhalten eines FULL OUTER JOIN
in MySQL nach und bietet einen praktischen Workaround für diese Einschränkung.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL-Abfrage mit einem Syntaxfehler bei FULL OUTER JOIN fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!