집 >데이터 베이스 >MySQL 튜토리얼 >OUTER JOIN 이후의 INNER JOIN은 OUTER JOIN의 효과를 무효화합니까?
중첩 SQL 조인: INNER JOIN 및 OUTER JOIN
INNER JOIN
다음에 OUTER JOIN
를 사용하면 OUTER JOIN
의 효과가 취소되나요? 다중 조인 쿼리에서는 INNER JOIN
이 항상 OUTER JOIN
보다 앞에 있어야 합니까?
답변은 미묘합니다. 후속 INNER JOIN
은 OUTER JOIN
절에 ON
로 인해 NULL
가 될 수 있는 열이 있어야 하는 경우에만 OUTER JOIN
를 무효화합니다. 단순히 조인을 재배열하는 것만으로는 이 문제가 해결되지 않습니다. INNER JOIN
을 적절한 OUTER JOIN
으로 변경해야 합니다.
설명해 보겠습니다.
예 1(재주문은 중요하지 않음):
<code class="language-sql">SELECT * FROM person LEFT JOIN address ON person.address_id = address.id INNER JOIN email ON person.email_id = email.id</code>
여기서 조인 순서를 변경해도 결과는 변경되지 않습니다.
예 2(사항 재정렬):
<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
절에는 NULL
이 아닌 address.city_id
이 필요합니다. 이는 LEFT OUTER JOIN
을 물리치고 person
을 통해 일치하는 city
없이 address
레코드를 필터링합니다. 이를 수정하려면 INNER JOIN
를 LEFT OUTER JOIN
으로 바꾸세요.
모범 사례:
엄격한 필수 사항은 아니지만 일반적으로 INNER JOIN
를 OUTER JOIN
앞에 배치하는 것이 좋습니다. 이를 통해 가독성이 향상되고 쿼리의 필수 필터링 조건이 명확해집니다. 게다가 RIGHT OUTER JOIN
은 덜 선호되는 경우가 많으며 일반적으로 더 나은 명확성과 유지 관리성을 위해 LEFT OUTER JOIN
을 사용하여 다시 작성할 수 있습니다.
위 내용은 OUTER JOIN 이후의 INNER JOIN은 OUTER JOIN의 효과를 무효화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!