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
Libérer: 2025-01-04 02:36:40
original
310 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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 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