Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN mit WHERE-Klausel

Verschieben Sie die Einschränkung in Ihre on-Klausel.

select *
from request r
left join requestStatus rs
on r.requestID = rs.requestID
--and status_id = 1
and status_id <> 2

Was bei Ihnen passiert, ist, dass der Outer Join zuerst ausgeführt wird. Alle Zeilen, die aus dem Outer Join stammen und keine Übereinstimmungen haben, haben Nullen in allen Spalten. Dann wird Ihre Where-Klausel angewendet, aber da 1 <> null ist, wird es nicht so funktionieren, wie Sie es möchten.

BEARBEITEN:Geänderte Klausel basierend auf Piyushs Kommentar.