집 >데이터 베이스 >MySQL 튜토리얼 >LEFT JOIN과 RIGHT JOIN은 언제 실제로 상호 교환 가능합니까?
LEFT JOIN과 RIGHT JOIN의 미묘한 차이점 이해
LEFT JOIN
과 RIGHT JOIN
은 동일한 조인 조건을 사용할 때 서로 바꿔서 사용할 수 있는 것처럼 보일 수 있지만 쿼리의 테이블 순서에 따라 동작이 크게 달라집니다. 예를 들어 살펴보겠습니다.
두 개의 테이블을 고려해보세요.
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
다음 데이터로 채워집니다:
Table1 | Table2 | |
---|---|---|
Id | Name | Id |
1 | A | 1 |
2 | B | 2 |
3 |
Table1.id = Table2.id
을 사용하여 참여하는 경우 LEFT JOIN
과 RIGHT JOIN
의 결과는 실제로 동일합니다.
<code class="language-sql">SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id; SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
조인 조건이 대칭이기 때문입니다. 하지만 테이블 순서가 바뀌면 호환성에 대한 환상이 깨집니다.
테이블 순서의 영향
다음 쿼리를 살펴보세요.
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
Table2
의 일치 여부에 관계없이 Table1
의 모든 행을 반환합니다. 결과 세트는 다음과 같습니다.
Table2 | Table1 | |
---|---|---|
Id | Name | Id |
1 | A | 1 |
2 | B | 2 |
3 | C |
반대로, 테이블 순서가 반대인 RIGHT JOIN
는 다음과 같습니다.
<code class="language-sql">SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
여기에는 Table2
에 일치하는 행이 있는 Table1
의 행만 포함됩니다. id = 3
에서 Table2
이 포함된 행은 제외됩니다.
따라서 조인 조건이 대칭으로 나타날 수 있지만 LEFT JOIN
과 RIGHT JOIN
사이의 선택과 테이블 순서에 따라 기본적으로 최종 결과 집합에 포함되도록 보장되는 테이블의 행이 결정됩니다. 다른 테이블에는 일치하는 항목이 없습니다. 예상한 결과를 얻으려면 항상 테이블 순서를 신중하게 고려하십시오.
위 내용은 LEFT JOIN과 RIGHT JOIN은 언제 실제로 상호 교환 가능합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!