Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je faire un FULL OUTER JOIN dans MySQL?

Vous n'avez pas de jointures complètes dans MySQL, mais vous pouvez certainement les émuler .

Pour un exemple de code transcrit de cette question Stack Overflow vous avez :

Avec deux tableaux t1, t2 :

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

La requête ci-dessus fonctionne pour les cas particuliers où une jointure externe complète l'opération ne produirait aucune ligne en double. La requête ci-dessus dépend de l'UNION set opérateur pour supprimer les lignes en double introduites par le modèle de requête. Nous pouvons éviter d'introduire des lignes en double en utilisant un anti-jointure modèle pour la deuxième requête, puis utilisez un opérateur d'ensemble UNION ALL pour combiner les deux ensembles. Dans le cas plus général, où une jointure externe complète renverrait des lignes en double, nous pouvons faire ceci :

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