Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN com cláusula WHERE


Mova a restrição para sua cláusula on.
select *
from request r
left join requestStatus rs
on r.requestID = rs.requestID
--and status_id = 1
and status_id <> 2

O que está acontecendo com você é que a junção externa é executada primeiro. Quaisquer linhas provenientes da junção externa que não tenham correspondências terão nulos em todas as colunas. Em seguida, sua cláusula where é aplicada, mas como 1 <> null, não funcionará como você deseja.

EDIT:Alterado na cláusula com base no comentário de Piyush.