Heim > Datenbank > MySQL-Tutorial > Warum gibt mein T-SQL LEFT JOIN weniger Zeilen zurück als erwartet?

Warum gibt mein T-SQL LEFT JOIN weniger Zeilen zurück als erwartet?

Mary-Kate Olsen
Freigeben: 2025-01-04 02:36:40
Original
278 Leute haben es durchsucht

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

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage