1 분 소요

Subquery

Subquery 종류

  • 서브쿼리란 SELECT 문 안에서 다시 SELECT문을 사용하는 SQL문이다.
  • FROM구에 SELECT문을 사용하면 인라인뷰
  • SELECT문에 서브쿼리를 사용하면 스칼라 서브쿼리
  • WHERE구에 SELECT문을 사용하면 서브쿼리

서브쿼리

-- 서브쿼리

SELECT * FROM 테이블 WHERE 칼럼 = 
(SELECT 칼럼명 FROM 테이블명 WHERE 조건);

괄호 안에 SELECT문이 서브쿼리이고 바깥의 SELECT문이 MAIN 쿼리이다.

인라인 뷰

-- 인라인 뷰

SELECT * FROM (SELECT 칼럼명 FROM 테이블명 WHERE 조건) WHERE 조건;

FROM 구에 사용된 SELECT문은 인라인 뷰이다.

가상의 테이블을 만들어 거기서 데이터를 조회하는 방식의 쿼리문이다.

스칼라 서브쿼리

-- 스칼라 서브쿼리

SELECT *,(SELECT 칼럼명 FROM 테이블명) FROM 테이블 WHERE 조건;

SELECT문에 사용된 서브쿼리는 스칼라 서브쿼리이다.

반드시 한 행과 한 칼럼만 반환하며, 여러 행이 반환되면 오류가 발생한다.

단일 행 서브쿼리와 다중 행 서브쿼리

  • 서브쿼리는 반환하는 행의 수에 따라 단일 행과 다중 행으로 구분된다.
서브쿼리 종류 설명
단일 행 서브쿼리 서브쿼리를 실행하면 그 결과는 반드시 한 행만 조회
비교 연산자를 사용
다중 행 서브쿼리 서브쿼리를 실행하면 여러 개의 행이 조회
다중행 비교 연산자 IN, ANY, ALL, EXISTS 사용

다중행 쿼리 비교 연산자

다중 행 연산 설명
IN 메인쿼리의 비교조건이 서브쿼리의 결과 중 하나만 동일하면 참(OR)
ALL 결과가 모두 동일하면 참
ANY IN메인쿼리의 비교조건이 서브쿼리의 결과 중 하나만 동일하면 참(OR)
EXISTS 결과가 하나라도 존재하면 참

연관 서브쿼리

  • 연관 서브쿼리는 서브쿼리내에서 메인 쿼리 내의 칼럼을 사용하는 것을 의미한다.

댓글남기기