Sub Query
단일 행 서브 쿼리
1SELECT USER_ID, USER_NAME, USER_AGE
2FROM USERS
3WHERE TEAM_ID = (
4 SELECT TEAM_ID
5 FROM USERS
6 WHERE USER_NAME='BONG'
7);
다중 행 서브 쿼리
- 서브쿼리 결과 : 다중 행
- 결과 : 단일행
- 다중 행 비교 연산자와 함께 사용 (IN, ALL, ANY, SOME)
1SELECT TEAM_ID, TEAM_NAME, TEAM_LOGO_URL
2FROM TEAM
3WHERE TEAM_ID IN (
4 SELECT TEAM_ID
5 FROM USERS
6 WHERE USER_NAME='BONG'
7)
다중 컬럼 서브 쿼리
1SELECT TEAM_ID, USER_NAME
2FROM USERS
3WHERE (TEAM_ID, HEIGHT)
4IN (
5 SELECT TEAM_ID, MIN(HEIGHT)
6 FROM USERS
7 GROUP BY TEAM_ID
8)
9ORDER BY TEAM_ID, USER_NAME
연관 서브 쿼리
1SELECT B.TEAM_NAME, A.USER_NAME, A.HEIGHT
2FROM USERS A, TEAM B
3WHERE A.HEIGHT < (
4 SELECT AVG(X.HEIGHT)
5 FROM USERS
6 WHERE X.TEAM_ID = A.TEAM_ID
7 GROUP BY X.TEAM_ID
8)
9ORDER BY USER_NAME
다른 위치에서 사용하는 서브 쿼리
1SELECT A.USER_NAME AS 유저이름, A.HEIGHT AS 키
2ROUND ((
3 SELECT AVG (X.HEIGHT)
4 FROM USERS X WHERE X.TEAM_ID = A.TEAM_ID), 3)
5 AS 팀평균키 FROM USERS A)