Maison >base de données >tutoriel mysql >Comment contourner le manque de support FULL OUTER JOIN de MySQL ?
Résoudre la limitation FULL OUTER JOIN de MySQL
Le manque de support natif FULL OUTER JOIN
de MySQL conduit souvent à des erreurs de syntaxe. Ce guide montre une solution de contournement utilisant l'opérateur UNION
pour obtenir le même résultat.
Rencontre avec cette erreur :
<code class="language-sql">You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer join airports on airlines.iaco_code = airports.iaco_code full outer join' at line 4</code>
confirme l'incompatibilité de MySQL avec la déclaration FULL OUTER JOIN
.
La solution consiste à simuler un FULL OUTER JOIN
en utilisant UNION
pour deux tables ou plus.
Deux tables (t1 et t2) :
<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>
Cela combine les résultats d'un LEFT JOIN
(toutes les lignes de t1
, lignes correspondantes de t2
) et d'un RIGHT JOIN
(toutes les lignes de t2
, lignes correspondantes de t1
), répliquant efficacement un FULL OUTER JOIN
.
Trois tables (t1, t2 et t3) :
Pour trois tables, la complexité augmente, nécessitant plusieurs UNION
opérations :
<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>
Cette approche combine systématiquement toutes les combinaisons de jointures possibles pour émuler un FULL OUTER JOIN
sur trois tables. N'oubliez pas d'ajuster t1.id
et t2.id
pour refléter les colonnes de jointure réelles dans votre scénario spécifique. Cette technique vous permet de contourner les limitations de MySQL et d'obtenir la FULL OUTER JOIN
fonctionnalité souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!