인프런 커뮤니티 질문&답변
distinct 대신 group by 사용해도 되나요?
작성
·
465
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요. 김영한님 강의로 조금씩 지식을 쌓고 있는 취준생입니다! 개인 프로젝트를 진행하다가 궁금한 점이 생겼습니다.
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();





