sql >> Database >  >> RDS >> Sqlserver

Waarom werkt mijn t-sql left join niet?

De reden is dat u de rechtertabel opneemt in de WHERE clausule. Je moet dat verplaatsen naar de ON toestand van 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

De reden dat het dit doet is omdat de WHERE clausule wordt geëvalueerd na de LEFT JOIN , die vervolgens uw NULL . uitfiltert resultaten van de LEFT JOIN .

Inclusief de rechter tabel van een LEFT JOIN (of de linkertabel van een RIGHT JOIN ) in de WHERE clausule transformeert effectief de OUTER JOIN in een INNER JOIN .




  1. Hoe SQL Server T-SQL-functie te gebruiken SUM:5 use-cases

  2. Hoe Group_Concat() werkt in SQLite

  3. Hoe kan ik het aantal woorden in een string in Oracle tellen?

  4. Hoe wist u het transactielogboek van SQL Server?