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

Un moyen efficace de simuler une jointure externe complète dans MySQL ?

Vous pouvez utiliser un LEFT JOIN et un RIGHT JOIN :

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

Il existe également des informations sur Wikipedia à ce sujet :Jointure externe complète .

L'article de Wikipedia suggère d'utiliser un UNION dans MySQL. C'est légèrement plus lent que UNION ALL, mais plus important encore, cela ne donnera pas toujours le bon résultat - cela supprimera les lignes dupliquées de la sortie. Préférez donc utiliser UNION ALL au lieu de UNION ici.