Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자바
- JDBC
- Exception
- springdatajpa
- Spring Boot
- db
- transaction
- Android
- AOP
- JPQL
- 알고리즘
- Greedy
- 스프링 핵심 기능
- 인프런
- kotlin
- Thymeleaf
- java
- 김영한
- QueryDSL
- Servlet
- Proxy
- http
- pointcut
- 백준
- SpringBoot
- jpa
- 스프링 핵심 원리
- 스프링
- 그리디
- spring
Archives
- Today
- Total
개발자되기 프로젝트
서브쿼리 본문
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