Maison > base de données > tutoriel mysql > Pourquoi des lignes manquent-elles dans mon résultat de jointure gauche ?

Pourquoi des lignes manquent-elles dans mon résultat de jointure gauche ?

Barbara Streisand
Libérer: 2025-01-04 09:33:35
original
358 Les gens l'ont consulté

Why are Rows Missing from my Left Join Result?

Différence de jointure gauche : lignes omises

Dans cette requête, le LEFT JOIN entre les tables #appSteps et #appProgress fonctionne mal, ce qui entraîne le exclusion des lignes attendues de l'ensemble de résultats.

Requête dans Question :

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

Résultat attendu :

appId stepId section start
101 1 Section 1 2016-01-03 00:00:00.000
101 2 Section 2 2016-01-03 00:00:00.000
101 10 Section 3 NULL

Résultat réel :

appId stepId section start
101 1 Section 1 2016-01-03 00:00:00.000
101 2 Section 2 2016-01-03 00:00:00.000

Résolution :

Le comportement erroné résulte de l'inclusion du table de droite (#appProgress) dans la clause WHERE. En déplaçant cette condition vers la clause ON du LEFT JOIN, le résultat souhaité peut être obtenu :

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

Dans un LEFT JOIN, la clause WHERE est exécutée après la jointure, ce qui signifie que les lignes de droite- Les tables manuelles qui ne répondent pas aux critères de la clause WHERE seront exclues du jeu de résultats. L'inclusion de la table de droite dans la clause WHERE la transforme effectivement en INNER JOIN, filtrant les résultats attendus.

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