Maison >base de données >tutoriel mysql >Un INNER JOIN remplace-t-il les résultats d'un OUTER JOIN antérieur ?
Utilisation combinée de INNER JOIN et OUTER JOIN
Lors de l'exécution de requêtes de jointure multi-tables, l'ordre de INNER JOIN et OUTER JOIN est crucial. Beaucoup de gens croient à tort que l'utilisation d'un INNER JOIN après un OUTER JOIN annulera l'effet de l'OUTER JOIN, mais ce n'est pas tout à fait vrai.
Le rôle de INNER JOIN
INNER JOIN supprime les lignes de l'ensemble de résultats qui n'ont pas de lignes correspondantes dans la table jointe. S'il n'y a pas de valeurs NULL dans les colonnes correspondantes (par exemple, paires de clé primaire et de clé étrangère), ces lignes sans correspondance sont de toute façon éliminées.
Problèmes potentiels
L'effet d'un OUTER JOIN sera compensé par un INNER JOIN ultérieur uniquement si la clause ON de l'INNER JOIN spécifie les lignes requises de l'OUTER JOIN qui peuvent être exclues. Par exemple, dans la requête suivante :
<code class="language-sql">SELECT * FROM person LEFT JOIN address ON person.address_id = address.id INNER JOIN city ON address.city_id = city.id</code>
La deuxième clause ON nécessite que address.city_id ne soit pas NULL, ce qui peut annuler l'effet de LEFT JOIN. Pour résoudre ce problème, le deuxième JOIN doit être remplacé par un LEFT OUTER JOIN.
Bonnes pratiques
Bien que cela ne change pas les résultats, il est généralement recommandé de mettre INNER JOIN avant OUTER JOIN dans la requête. Cela contribue à améliorer la lisibilité et garantit que les restrictions nécessaires sont appliquées avant que les restrictions facultatives ne soient appliquées. Évitez également d’utiliser RIGHT OUTER JOIN lorsque cela est possible et utilisez plutôt LEFT OUTER JOIN, ce qui améliore la clarté et la facilité de mise en œuvre.
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!