반응형

 

SQL - 서브쿼리(subquery) 개념 및 사용법

 

 

   목차

  1. 서브쿼리란?
  2. 서브쿼리 사용예제
    1. 단일행 서브쿼리
    2. 다중행 서브쿼리

 

 

1. 서브쿼리란?

 

서브쿼리(subquery)란 SQL문 내부에서 사용되는 SQL SELECT문을 말합니다. 

 

아래의 쿼리문 예시에서 검정색 쿼리문이 메인쿼리이고, 뒤에 조건식 이후의 파랑색 쿼리문이 서브쿼리가 됩니다. 서브쿼리는 말 그대로 전체 메인쿼리안에 서브로 사용되는 쿼리문을 말합니다. 

 

 ex) SELECT * FROM usertable1 WHERE 조건식 (SELECT * FROM usertable2 WHERE 조건식);

 

 

 

 

2. 서브쿼리 사용예제

 

1) 단일행 서브쿼리 - 서브쿼리의 실행결과가 하나인 경우

 

서브쿼리의 값을 단일 연산자 (=, <, >, <=, >==, <>, ^=, !=)를 사용하여 비교할 수 있습니다.

 

ex) SELECT * FROM usertable WHERE age < (SELECT age FROM usertable WHERE name='John');

  1. 파랑색 (서브쿼리) : usertable에서 John의 나이를 구함
  2. 검정색 (메인쿼리) : usertable에서 (서브쿼리)의 값보다 나이가 적은 사람들의 목록을 구함
  3. 최종결과는 결국 usertable에서 John 보다 나이가 적은 사람들의 목록을 구함

 

 

2) 다중행 서브쿼리 - 서브쿼리의 실행결과가 여러개인 경우

 

서브쿼리의 값이 여러개인 경우 단일 연산자 사용이 불가능 하므로, 다중행 연산자 (IN, ANY, SOME, ALL, EXISTS)를 사용하여 비교할 수 있습니다. 

 

ex) SELECT * FROM usertable WHERE score IN (SELECT MAX(score) FROM usertable GROUP BY class);

  1. 파랑색(서브쿼리) : usertable에서 각 반(class)별 최고점수(score)를 산출
  2. 검정색(메인쿼리) : usertable에서 (서브쿼리)의 값들과 일치하는 사람들의 목록을 구함
  3. 최종결과는 결국 usertable에서 각 반(class)별 최고점수(score)와 일치하는 사람들의 목록을 구함

 

 

반응형

+ Recent posts