sql >> Databasteknik >  >> RDS >> Sqlserver

Varför fungerar inte min t-sql left join?

Anledningen är att du inkluderar den högra tabellen i WHERE klausul. Du bör flytta det till ON skick för 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

Anledningen till att den gör detta är att WHERE klausul utvärderas efter LEFT JOIN , som sedan filtrerar bort din NULL resultat från LEFT JOIN .

Inklusive den högra tabellen för en LEFT JOIN (eller den vänstra tabellen i en RIGHT JOIN ) i WHERE satsen omvandlar effektivt OUTER JOIN till en INNER JOIN .




  1. Konvertera minuter till HH24:MI-format

  2. Hur delar man upp en enskild kolumnvärden till flera kolumnvärden?

  3. Får du veckonummer av ett datum i MS SQL Server 2005?

  4. Få automatiskt genererad nyckel från radinfogning i vår 3 / PostgreSQL 8.4.9