반응형
서브 쿼리 - 쿼리 안에 또 다른 쿼리 (Sub Query)
- SELET문에 있는 서브 쿼리 - 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도)
Ex)SELECT col1, (SELECT ...)
- FROM절에 있는 서브 쿼리 - 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도)
Ex) FROM (SELECT ...)
- WHERE절에 있는 서브 쿼리 - 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절)
Ex) WHERE col = (SELECT ...)
1. 스칼라 서브쿼리 (Scalar Subquery)
- select 절에서 사용하는 서브쿼리
- scalar는 '한번에 한가지만 처리하는' 이라는 뜻, scalar subquery에 의해 나오는 결과는 '하나의 행'이어야 한다.
SELECT col1,
(SELECT vol1 FROM vol v WHERE v.vol_id = c.col_id)
FROM col c
2. 인라인 뷰 (Inline View)
- 인라인 뷰는 FROM 절에 사용되는 서브 쿼리
- 인라인 뷰는 하나의 임시 테이블
- 메인 쿼리에서는 인라인 뷰에서 select한 컬럼만 사용 가능
SELECT c.*, v.vol_name
FROM col c,
(SELECT vol_id, vol_name, vol_date FROM vol) v
WHERE c.col_id = v.vol_id)
3. 서브 쿼리
- 서브 쿼리는 WHERE 절에서 사용하는 쿼리
- 서브 쿼리의 결과가 단일행이면 단일행 서브쿼리, 복수행이면 복수행 서브쿼리
SELECT col.*, v.vol_id, v.vol_name
FROM col c, (SELECT vol_id, vol_name, vol_date FROM vol) v
WHERE c.col_id = v.vol_id
서브쿼리 반환 값에 따른 서브 쿼리 종류
- 단일 행 서브 쿼리(Single-Row SubQuery) - 서브쿼리의 결과가 1행
- 다중 행 서브 쿼리(Multiple-Row SubQuery) - 서브쿼리의 결과가 여러 행
- 다중 컬럼 서브 쿼리(Multi-Column SubQuery) - 서브쿼리의 결과가 여러 컬럼
반응형
'데이터베이스(DB) > SQL' 카테고리의 다른 글
[MySQL] Lock wait timeout exceeded (0) | 2022.01.13 |
---|---|
MySQL Lock 상황 문제 해결 (1) | 2022.01.13 |
DB 데이터 출력 시간 설정하기 DATE_FORMAT() (0) | 2021.06.24 |
SQL 쿼리문 기초(HeidiSQL) - BETWEEN A AND B (0) | 2021.06.18 |
SQL 쿼리문 기초(HeidiSQL) - SELECT절, COUNT()함수, WHERE절, LIKE절, YEAR()함수, BETWEEN A AND B (0) | 2021.06.18 |