집 >데이터 베이스 >MySQL 튜토리얼 >특히 외부 조인의 경우 SQL 쿼리에서 조인 순서가 중요합니까?
SQL JOIN 순서: 중요한가요?
SQL에서는 특히 외부 조인을 사용할 때 JOIN 작업 순서가 쿼리 결과에 영향을 미칩니다.
INNER JOIN
내부 조인의 경우 테이블 A의 행은 특정 조건에 따라 테이블 B의 행과 정확하게 일치하며 조인 순서는 결과에 영향을 미치지 않습니다. 이는 내부 조인이 교환 가능하고 연관 가능하기 때문입니다. 따라서 아래 표시된 쿼리 A와 B는 동일한 결과를 생성합니다.
<code class="language-sql">-- A (内连接) SELECT * FROM a INNER JOIN b ON <条件> INNER JOIN c ON <条件>; -- B (内连接) SELECT * FROM a INNER JOIN c ON <条件> INNER JOIN b ON <条件>;</code>
외부 조인
외부 조인(LEFT, RIGHT 또는 FULL)의 경우 조인 순서가 중요합니다. 내부 조인과 달리 외부 조인은 교환하거나 결합할 수 없습니다.
교환법칙
교환성은 a LEFT JOIN b
이 b LEFT JOIN a
과 동일하다는 의미입니다. 그러나 외부 조인의 경우에는 그렇지 않습니다. 예를 들어 다음 쿼리는 다음과 같습니다.
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id</code>
테이블 a의 모든 행과 테이블 b의 해당 행을 반환하거나, 테이블 b에 일치하는 항목이 없으면 NULL을 반환합니다. 반대 검색어:
<code class="language-sql">b LEFT JOIN a ON a.ab_id = b.ab_id</code>
테이블 b의 모든 행과 테이블 a의 해당 행을 반환하거나, 테이블 a에 일치하는 항목이 없으면 NULL을 반환합니다. 테이블 a와 테이블 b의 행 수가 다른 경우 두 쿼리는 서로 다른 결과를 생성합니다.
결합법
의 결합법칙은 (a LEFT JOIN b) LEFT JOIN c
가 a LEFT JOIN (b LEFT JOIN c)
과 동일하다는 의미입니다. 그러나 외부 조인의 경우에도 마찬가지입니다. 다음과 같은 동등한 쿼리를 고려하십시오.
<code class="language-sql">a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id</code>
조건 c.ac_id = a.ac_id
에 NULL 비교가 포함되어 있으면 결합 법칙이 성립하지 않을 수 있습니다. 즉, 조인 조건에 NULL 값이 포함되면 조인 순서가 결과에 영향을 미치게 된다.
위 내용은 특히 외부 조인의 경우 SQL 쿼리에서 조인 순서가 중요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!