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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-04 00:32:40978검색

Why is my T-SQL LEFT JOIN Returning Fewer Rows Than Expected?

T-SQL Left 조인이 예상한 결과를 생성하지 않는 이유는 무엇입니까?

제공된 SQL 쿼리에서 사이에 LEFT JOIN을 사용했음에도 불구하고 테이블 2개(#appSteps 및 #appProgress), 예상되는 3개 행 대신 2개 행만 반환됩니다. 예상치 못한 동작의 원인을 파악하기 위해 쿼리와 해당 구성 요소를 분석해 보겠습니다.

LEFT JOIN 작업의 목표는 왼쪽 테이블(#appSteps)에서 해당 일치 항목이 없더라도 왼쪽 테이블의 모든 행을 반환하는 것입니다. 오른쪽 테이블(#appProgress). 그러나 쿼리에는 #appSteps:

where s.section is not null

에서 NULL 행을 필터링하는 WHERE 절의 조건이 포함되어 있습니다. 이 조건은 실수로 #appSteps.section이 NULL이 아닌 행으로 결과 집합을 제한합니다. LEFT JOIN을 INNER JOIN으로 변환합니다. #appSteps.section에서 NULL 값이 있는 행이 제외되어 예상되는 세 번째 행이 없습니다.

이 문제를 해결하려면 조건을 LEFT JOIN의 ON 조건으로 이동해야 합니다.

Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101

ON 절에 조건을 지정하면 조인 기준의 일부가 되어 #appSteps에서 일치하는 행만 가져옵니다. #appProgress. 결과적으로 LEFT JOIN은 #appProgress와 일치하는지 여부에 관계없이 NULL 값이 있는 행을 포함하여 #appSteps에서 모든 행을 검색합니다.

이 접근 방식을 사용하면 쿼리는 원래와 같이 원하는 세 개의 행을 반환합니다. 의도했습니다.

위 내용은 T-SQL LEFT JOIN이 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.