Maison > base de données > tutoriel mysql > LEFT JOIN dans SQL Server : clause ON ou WHERE – Quelle est la différence et quand dois-je les utiliser ?

LEFT JOIN dans SQL Server : clause ON ou WHERE – Quelle est la différence et quand dois-je les utiliser ?

Linda Hamilton
Libérer: 2024-12-26 19:12:13
original
918 Les gens l'ont consulté

LEFT JOINs in SQL Server: ON vs. WHERE Clause – What's the Difference and When Should I Use Each?

LEFT JOIN avec condition : On vs. WHERE

Dans SQL Server, les LEFT JOIN sont souvent utilisés pour récupérer les données d'une table lors de la liaison vers une autre table via une colonne commune. Cependant, une distinction subtile apparaît lors de l'utilisation de conditions dans les clauses ON et WHERE, conduisant à des résultats différents.

Clause JOIN ON par rapport à la clause WHERE

La clause ON dans un LEFT JOIN spécifie la condition qui détermine quelles lignes de la table principale (table jointe) seront mises en correspondance avec les lignes de la table secondaire (table jointe). En revanche, la clause WHERE filtre l'ensemble de résultats une fois la jointure effectuée.

Exemple

Considérez les deux requêtes suivantes :

-- LEFT JOIN with Condition in ON Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something;

-- LEFT JOIN with Condition in WHERE Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2
WHERE t2.f3 > something;
Copier après la connexion

Résultats

Étonnamment, ces deux requêtes ne produisent pas les mêmes résultats. La raison réside dans la différence entre les clauses JOIN et WHERE.

Dans la première requête, la condition de la clause ON restreint les lignes de t2 qui sont jointes à t1. Par conséquent, les lignes de t2 qui ne remplissent pas la condition (t2.f3 <= quelque chose) seront exclues de la jointure. Par conséquent, l'ensemble de résultats n'inclura pas les lignes de t1 qui auraient pu potentiellement correspondre aux lignes exclues de t2.

Dans la deuxième requête, la condition de la clause WHERE est appliquée après la jointure. a été effectuée. Par conséquent, toutes les lignes de t1 sont jointes à toutes les lignes de t2, qu'elles remplissent ou non la condition. Par la suite, la clause WHERE filtre les lignes qui ne remplissent pas la condition, fournissant un ensemble de résultats différent de celui de la première requête.

Conclusion

Comprendre la distinction entre les clauses ON et WHERE sont cruciales lorsque vous travaillez avec des LEFT JOIN. La clause ON détermine les lignes correspondantes pour la jointure, tandis que la clause WHERE filtre le jeu de résultats une fois la jointure terminée. Cette compréhension garantit que les résultats souhaités sont obtenus à partir de requêtes SQL impliquant des LEFT JOIN.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal