Maison >base de données >tutoriel mysql >MySQL prend-il en charge les jointures externes complètes?

MySQL prend-il en charge les jointures externes complètes?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-25 13:36:13259parcourir

Does MySQL Support Full Outer Joins?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn