"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 내부 결합이 외부 조인의 널 값 포함을 무시합니까?

내부 결합이 외부 조인의 널 값 포함을 무시합니까?

2025-03-13에 게시되었습니다
검색:384

Does an INNER JOIN Override an OUTER JOIN's Inclusion of NULL Values?

복잡한 SQL 쿼리는 자주 다른 조인 유형을 결합하여 여러 가지 결합 작업을 종종 사용합니다. 주요 고려 사항은 외부 결합의 특성 인 Null 값을 포함시키는 방법이 내부 결합이 이후에 적용될 때 어떻게 영향을 받는지입니다.

내부 결합이 외부 결합 결과에 영향을 줄 수있는 방법

내부 결합은 본질적으로 결합 조건이 테이블 모두에서 충족되는 행 만 반환합니다. 내부 조인이 외부 조인을 따르고 내부 조인 조건이 널 (OUTER JOIN로 인해)이 널이 될 수있는 열에 의존하면 열이 널이면 효과적으로 필터링됩니다. 이것은 외부 결합이 처음 제공 한 널 값의 포함을 무효화합니다.

예시 예

시나리오를 검토합시다 :

선택하다 * 사람에게서 person.address_id = address.id의 왼쪽 가입 주소 Inner on Person.email_id = email.id;

의 내부 가입 이메일

내부 조인
SELECT *
FROM person
LEFT JOIN address ON person.address_id = address.id
INNER JOIN email ON person.email_id = email.id;
email_id

person email 모두에 존재하는 행으로 만 결과를 제한합니다 이메일 . person 의 행은 주소 가 있었지만 null email_id 는 제외됩니다. 문제가있는 시나리오와 해당 솔루션 이 쿼리를 고려하십시오 : 선택하다 * 사람에게서 person.address_id = address.id의 왼쪽 가입 주소 주소에 시내에 가입합니다 .city_id = city.id;

여기,

내부 조인 City

내부 조인

address.city_id
SELECT *
FROM person
LEFT JOIN address ON person.address_id = address.id
INNER JOIN city ON address.city_id = city.id;
person

행)는 의도하지 않게 최초의 왼쪽 조인의 결과를 변경하지 않습니다 . . 올바른 접근 방식은 내부 조인 : 대신 다른 왼쪽 조인 를 사용하는 것입니다. 선택하다 * 사람에게서 person.address_id = address.id의 왼쪽 가입 주소 주소에 도시에 가입합니다 .city_id = city.id;

이것은 초기 왼쪽 결합 의 포괄 성을 보존하며 address.city_id 가 null 일 수있는 경우를 올바르게 처리합니다. 이렇게하면 주소와 관련된 도시가 있는지 여부에 관계없이 모든

Person
 레코드가 포함되도록합니다. 
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3