Warum gibt mein T-SQL LEFT JOIN weniger Zeilen als erwartet zurück?
Jan 04, 2025 am 12:32 AMWarum liefert Ihr T-SQL Left Join nicht das erwartete Ergebnis?
In der bereitgestellten SQL-Abfrage, obwohl dazwischen ein LEFT JOIN verwendet wird Bei zwei Tabellen (#appSteps und #appProgress) werden statt der erwarteten drei nur zwei Zeilen zurückgegeben. Um die Ursache für dieses unerwartete Verhalten zu ermitteln, analysieren wir die Abfrage und ihre Komponenten.
Die LEFT JOIN-Operation zielt darauf ab, alle Zeilen aus der linken Tabelle (#appSteps) zurückzugeben, auch wenn sie keine entsprechenden Übereinstimmungen enthalten die richtige Tabelle (#appProgress). Die Abfrage enthält jedoch eine Bedingung in der WHERE-Klausel, die die NULL-Zeilen aus #appSteps herausfiltert:
where s.section is not null
Diese Bedingung begrenzt den Ergebnissatz versehentlich auf Zeilen, in denen #appSteps.section effektiv ungleich NULL ist Konvertieren des LEFT JOIN in einen INNER JOIN. Die Zeilen mit NULL-Werten in #appSteps.section werden ausgeschlossen, was dazu führt, dass die erwartete dritte Zeile fehlt.
Um dieses Problem zu beheben, sollte die Bedingung in die ON-Bedingung des LEFT JOIN verschoben werden:
Left Join #appProgress P On S.stepId = P.stepId And P.appId = 101
Durch die Angabe der Bedingung in der ON-Klausel wird sie Teil der Join-Kriterien und stellt sicher, dass nur übereinstimmende Zeilen aus #appSteps von #appProgress abgerufen werden. Folglich ruft der LEFT JOIN weiterhin alle Zeilen von #appSteps ab, einschließlich derjenigen mit NULL-Werten, unabhängig davon, ob sie mit #appProgress übereinstimmen.
Mit diesem Ansatz gibt die Abfrage wie ursprünglich die gewünschten drei Zeilen zurück beabsichtigt.
Das obige ist der detaillierte Inhalt vonWarum gibt mein T-SQL LEFT JOIN weniger Zeilen als erwartet zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?

So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin)

Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung

Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?
