sql >> Databáze >  >> RDS >> Sqlserver

Proč moje levé připojení t-sql nefunguje?

Důvodem je to, že do WHERE vkládáte tabulku napravo doložka. Měli byste to přesunout do ON stav 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

Důvodem, proč to dělá, je WHERE klauzule je vyhodnocena po LEFT JOIN , který pak odfiltruje vaše NULL výsledky z LEFT JOIN .

Včetně tabulky LEFT JOIN vpravo (nebo levá tabulka RIGHT JOIN ) v WHERE klauzule efektivně transformuje OUTER JOIN do INNER JOIN .




  1. Oracle After Delete Trigger... Jak se vyhnout Mutující tabulce (ORA-04091)?

  2. Instalace klienta Oracle Warehouse Builder 11g R2

  3. MySQL Seznam všech procedur

  4. Jak upravit dobu uchování změn dat Capture (CDC) v SQL Server - SQL Server výukový program