sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué mi combinación izquierda t-sql no funciona?

La razón es porque está incluyendo la tabla de la derecha en WHERE cláusula. Deberías mover eso a ON condición de LEFT JOIN :

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

La razón por la que hace esto es porque WHERE la cláusula se evalúa después el LEFT JOIN , que luego filtra su NULL resultados de LEFT JOIN .

Incluyendo la tabla de la derecha de un LEFT JOIN (o la tabla de la izquierda de un RIGHT JOIN ) en el WHERE cláusula transforma efectivamente el OUTER JOIN en un INNER JOIN .