Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо моето ляво присъединяване на t-sql не работи?

Причината е, че включвате дясната таблица в WHERE клауза. Трябва да го преместите в ON условие на 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

Причината за това е, че WHERE клаузата се оценява след LEFT JOIN , който след това филтрира вашия NULL резултати от LEFT JOIN .

Включително дясната таблица на LEFT JOIN (или лявата таблица на RIGHT JOIN ) в WHERE клаузата ефективно трансформира OUTER JOIN в INNER JOIN .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2005 ROW_NUMBER() без ORDER BY

  2. Топ 5 факта за намиране и замяна на SQL текстове в SQL Server с функция REPLACE

  3. Как работи функцията TRANSLATE() в SQL Server (T-SQL)

  4. Ограничение за кръстосана таблица на MS SQL Server

  5. Конфигурирайте SQL задания в SQL Server с помощта на T-SQL