집 >데이터 베이스 >MySQL 튜토리얼 >내 왼쪽 외부 결합이 왼쪽 테이블보다 더 많은 레코드를 반환하는 이유는 무엇입니까?
왼쪽 외부 조인과 예상치 못한 행 개수: 자세히 살펴보기
SQL 데이터베이스에서 왼쪽 외부 조인은 두 테이블의 데이터를 결합하여 결과 집합에 왼쪽 테이블의 모든 행이 포함되도록 보장합니다. 그러나 일반적인 오해는 출력이 항상 왼쪽 테이블과 동일한 수의 행을 갖는다는 것입니다. 반드시 그런 것은 아닙니다.
왼쪽 외부 조인의 동작은 왼쪽 테이블의 각 행을 오른쪽 테이블의 해당 행과 일치시키는 것입니다. 일치하는 항목이 발견되면 두 테이블의 데이터가 단일 행으로 결합됩니다. 결정적으로, 왼쪽 테이블의 특정 행에 대해 오른쪽 테이블에서 일치하는 항목이 없음인 경우 해당 왼쪽 테이블 행은 여전히 결과에 포함되지만 오른쪽 테이블의 열에 대한 값은 NULL
입니다. .
왼쪽 표의 단일 행이 오른쪽 표의 여러 행과 일치하면 불일치가 발생합니다. 이 경우 왼쪽 외부 조인은 출력에서 오른쪽의 각 일치 항목에 대해 하나씩 여러 행을 생성하여 원래 왼쪽 테이블의 행 개수를 초과하게 됩니다.
SQL 쿼리 예를 들어 설명하겠습니다.
<code class="language-sql">SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum</code>
이 쿼리는 SUSP.Susp_Visits
에서만 데이터를 검색하려고 합니다. 그러나 MemID
의 SUSP.Susp_Visits
이 DATA.Dim_Member
의 여러 항목에 해당하는 경우 결과에는 각 SUSP.Susp_Visits
행에 대해 여러 행이 포함됩니다.
행 개수가 부풀려지는 것을 방지하고 왼쪽 테이블의 데이터만 검색하려면 더 간단한 쿼리를 사용하는 것이 좋습니다.
<code class="language-sql">SELECT SuspReason, SiteID FROM SUSP.Susp_Visits</code>
이 직접 쿼리는 테이블 간의 일대다 관계를 처리할 때 왼쪽 외부 조인 동작에 내재된 행 수 불일치 가능성 없이 원하는 데이터를 효율적으로 검색합니다.
위 내용은 내 왼쪽 외부 결합이 왼쪽 테이블보다 더 많은 레코드를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!