집 >데이터 베이스 >MySQL 튜토리얼 >내 T-SQL LEFT JOIN이 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?
T-SQL Left Join이 예상한 결과를 산출하지 않음
이 문의에서는 두 테이블 #appSteps 및 #appProgress 간의 LEFT JOIN 작업이 수행되었습니다. , 원하는 결과 세트를 반환하지 않습니다. 의도한 결과 집합에는 세 개의 행이 포함되어 있지만 실제 결과에는 두 개의 행만 있습니다.
제공된 SQL 쿼리는 다음과 같습니다.
select p.appId, s.stepId, s.section, p.start from #appSteps s with (nolock) left join #appProgress p on s.stepId = p.stepId where s.section is not null and p.appId = 101
문제는 오른쪽 행이 포함되어 발생합니다. WHERE 절의 테이블(#appProgress). 이를 수정하려면 조건을 LEFT JOIN의 ON 조건으로 이동해야 합니다.
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 결과가 필터링되는 것을 방지할 수 있습니다. 가입하다. ON 절에 조건을 배치하면 LEFT JOIN이 의도한 대로 효과적으로 작동하여 오른쪽 테이블의 일치하는 행(#appProgress)과 일치하지 않는 행의 NULL과 왼쪽 테이블(#appSteps)의 모든 행을 반환합니다.
위 내용은 내 T-SQL LEFT JOIN이 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!