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

Hvorfor virker min t-sql left join ikke?

Årsagen er, at du inkluderer den højre tabel i WHERE klausul. Du skal flytte det til ON betingelse for 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

Grunden til at det gør dette, er fordi WHERE klausul evalueres efter LEFT JOIN , som derefter filtrerer din NULL fra resultater fra LEFT JOIN .

Inklusive den højre tabel for en LEFT JOIN (eller den venstre tabel i en RIGHT JOIN ) i WHERE klausulen transformerer effektivt OUTER JOIN ind i en INNER JOIN .




  1. En anden måde at se automatiske opdateringer til statistik

  2. SSIS-pakken ønsker ikke at hente metadata fra den midlertidige tabel

  3. Eksempler på konvertering af 'dato' til 'datetime' i SQL Server (T-SQL)

  4. Oracle-låse og bordlåse:Sådan fungerer det