> 데이터 베이스 > MySQL 튜토리얼 > 내 T-SQL LEFT JOIN이 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?

내 T-SQL LEFT JOIN이 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-04 02:36:40
원래의
278명이 탐색했습니다.

Why Does My T-SQL LEFT JOIN Return Fewer Rows Than Expected?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿