Le manque de support extérieur complet de MySQL de MySQL en plein air et de contournement
La question: MySQL propose-t-elle une jointure extérieure complète native, garantissant que toutes les lignes des deux tables jointes sont incluses quels que soient les critères de correspondance?
La réponse: Non, MySQL ne prend pas directement en charge les jointures extérieures complètes. Cependant, nous pouvons reproduire efficacement cette fonctionnalité en utilisant des techniques alternatives.
APPROCHE 1: Tiration de l'union
Cette approche convient lorsqu'il n'y a aucun risque de générer des lignes en double dans la sortie. La requête combine un LEFT JOIN
et un RIGHT JOIN
en utilisant UNION
:
<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>
Approche 2: employant un syndicat avec un anti-join
Pour les scénarios où les lignes en double sont possibles, une méthode plus robuste est nécessaire. Cela implique d'utiliser UNION ALL
avec un anti-jointure pour éliminer la redondance:
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION ALL SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id WHERE t1.id IS NULL;</code>
La partie anti-join (WHERE t1.id IS NULL
dans la partie RIGHT JOIN
) filtre les doublons avant l'opération UNION ALL
combine les résultats. Cela garantit une émulation complète et précise d'une jointure extérieure complète.
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!