T-SQL Left Join liefert nicht die erwarteten Ergebnisse
In dieser Anfrage eine LEFT JOIN-Operation zwischen zwei Tabellen, #appSteps und #appProgress , gibt nicht die gewünschte Ergebnismenge zurück. Der beabsichtigte Ergebnissatz enthält drei Zeilen, das tatsächliche Ergebnis jedoch nur zwei.
Die bereitgestellte SQL-Abfrage lautet wie folgt:
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
Das Problem ergibt sich aus der Einbeziehung der rechten Seite Tabelle (#appProgress) in der WHERE-Klausel. Um dies zu beheben, sollte die Bedingung in die ON-Bedingung des LEFT JOIN verschoben werden:
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
Diese Änderung stellt sicher, dass die WHERE-Klausel nach dem LEFT JOIN ausgewertet wird, wodurch das Herausfiltern von NULL-Ergebnissen aus dem verhindert wird verbinden. Durch Platzieren der Bedingung in der ON-Klausel verhält sich der LEFT JOIN effektiv wie beabsichtigt und gibt alle Zeilen aus der linken Tabelle (#appSteps) mit übereinstimmenden Zeilen in der rechten Tabelle (#appProgress) und NULL-Werte für nicht übereinstimmende Zeilen zurück.
Das obige ist der detaillierte Inhalt vonWarum gibt mein T-SQL LEFT JOIN weniger Zeilen zurück als erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!