Maison > base de données > tutoriel mysql > Pourquoi mon T-SQL LEFT JOIN ne renvoie-t-il que deux lignes au lieu de trois ?

Pourquoi mon T-SQL LEFT JOIN ne renvoie-t-il que deux lignes au lieu de trois ?

Mary-Kate Olsen
Libérer: 2025-01-06 00:55:39
original
924 Les gens l'ont consulté

Why is my T-SQL LEFT JOIN only returning two rows instead of three?

Jointure gauche ne donnant pas les résultats attendus

Le code T-SQL fourni vise à effectuer une jointure gauche entre deux tables, #appSteps et #appProgress, mais l'ensemble de résultats ne contient que deux lignes au lieu de ce qui était attendu trois.

Problème

Le problème se pose car la table de droite (#appProgress) est incluse dans la clause WHERE :

where s.section is not null
and p.appId = 101
Copier après la connexion

Explication

Un LEFT JOIN est destiné à renvoyer toutes les lignes en partant de la gauche table, y compris ceux sans enregistrements correspondants dans la table de droite. Cependant, en incluant la table de droite dans la clause WHERE, la requête fonctionne effectivement comme une INNER JOIN, filtrant les lignes de la table de gauche sans faire correspondre les enregistrements de la table de droite.

Solution

Pour obtenir l'ensemble de résultats souhaité, déplacez la condition de filtre du tableau de droite vers la clause ON de GAUCHE 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

En plaçant la condition dans la clause ON, les lignes correspondantes des deux tables sont d'abord jointes, puis la clause WHERE est appliquée pour filtrer davantage les résultats, garantissant que seules les lignes avec une valeur non nulle les valeurs de la section sont renvoyées.

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