Maison >base de données >tutoriel mysql >Pourquoi mon T-SQL LEFT JOIN renvoie-t-il moins de lignes que prévu ?

Pourquoi mon T-SQL LEFT JOIN renvoie-t-il moins de lignes que prévu ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 02:36:40275parcourir

Why Does My T-SQL LEFT JOIN Return Fewer Rows Than Expected?

La jointure gauche T-SQL ne donne pas les résultats attendus

Dans cette enquête, une opération LEFT JOIN entre deux tables, #appSteps et #appProgress , ne renvoie pas l'ensemble de résultats souhaité. L'ensemble de résultats prévu contient trois lignes, mais le résultat réel n'en contient que deux.

La requête SQL fournie est la suivante :

select p.appId, s.stepId, s.section, p.start
from #appSteps s with (nolock)
left join #appProgress p on s.stepId = p.stepId
where s.section is not null
and p.appId = 101

Le problème provient de l'inclusion de la partie droite table (#appProgress) dans la clause WHERE. Pour remédier à cela, la condition doit être déplacée vers la condition ON du LEFT JOIN :

Select    P.appId, S.stepId, S.section, P.start
From      #appSteps    S   With (NoLock)
Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101
Where     S.section Is Not Null

Cette modification garantit que la clause WHERE est évaluée après le LEFT JOIN, empêchant le filtrage des résultats NULL du rejoindre. En plaçant la condition dans la clause ON, LEFT JOIN se comporte effectivement comme prévu, renvoyant toutes les lignes de la table de gauche (#appSteps) avec les lignes correspondantes dans la table de droite (#appProgress) et des NULL pour les lignes sans correspondance.

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