집 >데이터 베이스 >MySQL 튜토리얼 >INNER JOIN이 이전 OUTER JOIN의 결과를 재정의합니까?
INNER JOIN과 OUTER JOIN의 결합
다중 테이블 조인 쿼리를 실행할 때는 INNER JOIN과 OUTER JOIN의 순서가 중요합니다. 많은 사람들은 OUTER JOIN 다음에 INNER JOIN을 사용하면 OUTER JOIN의 효과가 상쇄될 것이라고 잘못 생각하지만 이는 전적으로 사실이 아닙니다.
INNER JOIN의 역할
INNER JOIN은 조인된 테이블에 일치하는 행이 없는 결과 집합의 행을 제거합니다. 일치하는 열(예: 기본 키 및 외래 키 쌍)에 NULL 값이 없으면 일치하지 않는 이러한 행은 어쨌든 제거됩니다.
잠재적인 문제
OUTER JOIN의 효과는 INNER JOIN의 ON 절이 제외될 수 있는 OUTER JOIN의 필수 행을 지정하는 경우에만 후속 INNER JOIN으로 상쇄됩니다. 예를 들어 다음 쿼리에서는
<code class="language-sql">SELECT * FROM person LEFT JOIN address ON person.address_id = address.id INNER JOIN city ON address.city_id = city.id</code>
두 번째 ON 절에서는 address.city_id가 NULL이 아니어야 하며, 이는 LEFT JOIN의 효과를 무효화할 수 있습니다. 이 문제를 해결하려면 두 번째 JOIN을 LEFT OUTER JOIN으로 변경해야 합니다.
모범 사례
결과가 바뀌지는 않지만 일반적으로 쿼리에서는 OUTER JOIN 앞에 INNER JOIN을 넣는 것이 좋습니다. 이렇게 하면 가독성이 향상되고 선택적 제한이 적용되기 전에 필요한 제한이 적용됩니다. 또한 가능하면 RIGHT OUTER JOIN을 사용하지 말고 대신 LEFT OUTER JOIN을 사용하면 명확성과 구현 용이성이 향상됩니다.
위 내용은 INNER JOIN이 이전 OUTER JOIN의 결과를 재정의합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!