서브쿼리(Subquery)란 하나의 SQL문안에 포함되어 있는 또 다른 SQL문을 말한다. 서브쿼리는 알려지지 않은 기준을 이용한 검색을 위해 사용한다. 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
- 서브쿼리 사용시 주의사항
- 서브쿼리를 괄호로 감싸서 사용한다.
- 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하이어야 하고 복수 행 비교 연산자는 서브쿼리의 결과 건수와 상관 없다.
- 서브쿼리에서는 ORDER BY를 사용하지 못한다. ORDER BY절은 SELECT절에서 오직 한 개만 올 수 있기 때문에 ORDER BY절은 메인쿼리의 마지막 문장에 위치해야 한다.
- 서브쿼리가 가능한 곳은 다음과 같다.
- SELECT CLAUSE
- FROM CLAUSE
- WHERE CLAUSE
- HAVING CLAUSE
- ORDER BY CLAUSE
- INSERT VALUES CLAUSE
- UPDATE SET CLAUSE
① 단일행 서브쿼리(Single Row Subquery)
② 다중행 서브쿼리(Multiple Row Subquery)
③ 다중컬럼 서브쿼리(Multi Column Subquery)
1 2 3 4 5 6 7 8 | SELECT * FROM Player WHERE Team_ID = ( SELECT Team_ID FROM Player WHERE Player_name = "yonglae" ) ORDER BY Team_name; |
② 다중행 서브쿼리(Multiple Row Subquery)
1 2 3 4 5 6 7 8 | SELECT * FROM Team WHERE Team_ID IN ( SELECT Team_ID FROM Player WHERE Player_name = "yonglae" ) ORDER BY Team_name; |
③ 다중컬럼 서브쿼리(Multi Column Subquery)
1 2 3 4 5 6 7 8 | SELECT * FROM Player WHERE (Team_ID, Height) IN ( SELECT Team_ID, MIN (Height) FROM Player GROUP BY Team_ID ) ORDER BY Team_ID, Player_name; |
'개발 > DB' 카테고리의 다른 글
MS-SQL 날짜형식 SELECT (0) | 2017.08.29 |
---|---|
오라클 사용자 비밀번호 변경 oracle password change (0) | 2017.08.10 |
Outer Join 정리 (0) | 2017.07.31 |
[시간별 통계] 한개의 테이블에서 여러개 count값 뽑기 (0) | 2017.03.17 |
[ MYSQL ] Access denied for user ~ (using password: YES) (0) | 2017.03.17 |