인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

이용준님의 프로필 이미지
이용준

작성한 질문수

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

페치 조인 1 - 기본

distinct 대신 group by 사용해도 되나요?

작성

·

420

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (/아니오)

[질문 내용]
안녕하세요. 김영한님 강의로 조금씩 지식을 쌓고 있는 취준생입니다! 개인 프로젝트를 진행하다가 궁금한 점이 생겼습니다.
 
일대다 페치 조인 시 중복을 걸러내기 위해
distinct를 사용한다는 강의를 들었습니다.
 
프로젝트를 진행하며 일대다 페치 조인을 하는 쿼리에
disctinct 대신 group by를 써봤는데 중복을 걸러내기에 문제가 없어보여서 질문드립니다.
 
1. group by를 써서 중복을 걸러내도 문제가 없나요?
 
2. 문제가 없다면, 왜 두 방법 중 distinct를 사용하는지?
(고민해보기로는 sort의 유무..? group by의 경우 데이터가 내부적으로 정렬이 되어 시간이 더 소요된다는 게 이유인지 궁금합니다!)
 
답변 주시면 감사하겠습니다.
 
//        return em.createQuery(
// "select distinct o from Order o " +
// " join fetch o.orderBooks ob" +
// " join fetch ob.book" +
// " where o.member.id = :memberId", Order.class)
// .setParameter("memberId", memberId)
// .getResultList();

return em.createQuery(
"select o from Order o " +
" join fetch o.orderBooks ob" +
" join fetch ob.book" +
" where o.member.id = :memberId" +
" group by o", Order.class)
.setParameter("memberId", memberId)
.getResultList();
 

답변 1

1

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

안녕하세요. 이용준님

distinct와 group by는 다른 기능입니다.

SQL 기본 내용을 참고해주세요.

감사합니다.

이용준님의 프로필 이미지
이용준

작성한 질문수

질문하기