인프런 커뮤니티 질문&답변

김태형님의 프로필 이미지
김태형

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

조인

JPQL 관련 질문 드립니다!

작성

·

208

0

14분 쯤에 SELECT m, t FROM MEMBER m LEFT JOIN TEAM t on m.username=t.name 은

SELECT m, t FROM MEMBER m LEFT JOIN TEAM t where m.username=t.name 과 다른 건가요??

다르다면 어떤 차이가 있는지 궁금합니다!

답변 2

0

m.username = t.name의 조건을 언제 검사하느냐의 차이입니다.

첫번째 쿼리는 조인을 통해 결과 테이블을 찾을 때 해당 조건을 검사합니다.

그러니까 m.username = t.name 을 만족하지 않는 row에 대해서 오른쪽 테이블의 컬럼들은 null로 존재할겁니다. (left join이니까)

반면에 두번째 쿼리의 경우 일단 left join으로 결과 테이블을 가져옵니다.(이때까지는 우측이 null인 행도 존재할 것) 

그 후 거기에서 where 조건으로 m.username = t.name을 검사하니까 최종 결과에서는 m.username = t.name이 충족되는 녀석들만 남아있을 겁니다. (첫번째의 경우처럼 null로 존재하는 것이 아니라)

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 태형님^^

둘을 LEFT JOIN 기준으로(한쪽에 데이터가 없는 상태에서 조인) 실제 테스트 해보시면 다를 것을 바로 이해하실 수 있을거에요.

감사합니다.

김태형님의 프로필 이미지
김태형

작성한 질문수

질문하기