• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

JPQL 관련 질문 드립니다!

21.01.31 16:33 작성 조회수 147

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

임현강님의 프로필

임현강

2021.03.09

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 기준으로(한쪽에 데이터가 없는 상태에서 조인) 실제 테스트 해보시면 다를 것을 바로 이해하실 수 있을거에요.

감사합니다.