SQL에서 LEFT JOIN을 활용할 때 고유한 특성과 잠재적인 함정을 인식하는 것이 중요합니다. . 이 질문은 LEFT JOIN 쿼리가 예상치 못한 결과를 반환하는 예를 보여 주며, 이는 기본 메커니즘을 자세히 조사하고 문제를 해결하라는 메시지를 표시합니다.
LEFT JOIN 작업은 왼쪽 테이블에서 모든 행을 검색합니다(이 경우 #appSteps) 올바른 테이블(#appProgress)과 일치하는지 여부에 관계 없습니다. 오른쪽 테이블에서 일치하지 않는 행에는 NULL 값이 할당됩니다. 그러나 WHERE 절(p.appId = 101)에 올바른 테이블을 포함하면 본질적으로 쿼리가 INNER JOIN으로 변환됩니다.
해결책:
문제를 해결하려면 올바른 테이블(p.appId = 101)을 필터링하는 조건자를 WHERE 절에서 이동해야 합니다. LEFT JOIN 문의 ON 조건에. 이렇게 하면 조인을 수행하기 전에 올바른 테이블을 필터링하여 일치하는 행만 포함되도록 합니다.
조정된 SQL 문은 다음과 같습니다.
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
쿼리를 다음과 같이 조정합니다. LEFT JOIN 기능을 올바르게 활용하면 실수로 행을 제외하지 않고 #appSteps의 null이 아닌 모든 행과 #appProgress의 일치하는 행을 포함하여 예상된 결과를 얻을 수 있습니다. WHERE 절에 추가 술어가 있습니다.
위 내용은 SQL의 LEFT JOIN이 예기치 않은 결과를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!