Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN con clausola WHERE

Sposta il vincolo sulla tua clausola on.

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

Quello che ti sta succedendo è che il join esterno viene eseguito per primo. Tutte le righe provenienti dall'outer join che non hanno corrispondenze avranno valori null in tutte le colonne. Quindi viene applicata la tua clausola where, ma poiché 1 <> null, non funzionerà come desideri.

EDIT:Modificata la clausola in base al commento di Piyush.