Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

서브쿼리 본문

인프런/[인프런] 자바ORM 표준 JPA 프로그래밍

서브쿼리

Seung__ 2021. 8. 16. 15:43

1.서브쿼리란?


  • 쿼리안에 쿼리
  • 나이가 평균보다 많은 회원
    • select m from Member m
      where m.age>(select avg(m2.age) from Member m2)
  • 한 건이라도 주문한 고객
    • select m from Member m
      where (select count(o) from Order o where m = o.member) > 0

 

 

2. 서브쿼리 지원 함수


  • [NOT] EXIST (subquery) : 서브쿼리에 결과가 존재하면 참
    • {ALL | ANY | SOME} (subquery)
    • ALL : 모두 만족하면 참
    • ANY, SOME : 같은 의미, 조건을 하나라도 만족하면 참
  • [NOT] IN (subquery): 서브쿼리의 결과 중 하나라도 같은 것이 있으면 참.

 

 

3.예제


  • 팀 A 소속인 팀원
    • select m from Member m
      where exist (select t from m.team t where t.name = '팀 A')
  • 전체 상품 각각의 재고보다 주문량이 많은 주문들
    • select o from Order o
      where o.orderAmount > ALL (select p.stockAmount from Product p)
  • 어떤 팀이든 팀에 소속된 회원
    • select m from Member m
      where m.team = ANY(select t from Team t)

 

 

4. JPA 서브쿼리 한계


  • JPA는 WHERE, HAVING 절에서만 서브쿼리 가능
  • SELECT 절도 가능(하이버네이트에서 별도 지원)
  • FROM 절의 서브쿼리는 현재 JPQL에서 불가능
    • 조인으로 풀 수 있으면 풀어서 해결

'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글

JPQL 조건식 - CASE  (0) 2021.08.16
JPQL 타입 표현  (0) 2021.08.16
JPQL JOIN  (0) 2021.08.16
JPQL 페이징 API  (0) 2021.08.16
JPQL 프로젝션  (0) 2021.08.16
Comments