모두의 SQL - 서브쿼리

-·2022년 6월 25일
0

서브쿼리?

SELECT문안에 SELECT문을 사용하는것

서브쿼리의 결과가 메인쿼리의 조건으로 사용됨

규칙

  • 괄호로 묶어서 사용
  • 연결하기 위해서는 연산자 사용
  • 연결형태는 연산자에 따라서 결정
  • 메인쿼리는 연산자의 왼쪽 서브쿼리는 오른쪽에 기술
  • 계속 중첩하여서 작성가능

종류

서브쿼리 종류설명
단일행 서브쿼리하나의 행을 검색하는 서브쿼리
다중행 서브쿼리하나 이상의 행을 검색하는 서브쿼리
다중열 서브쿼리하나 이상의 열을 검색하는 서브쿼리

연산자의 종류

연산자 구분종류사용처
단일 행 연산자=, >, >=, <, <=, <>, !=단일 행, 다중 열
다중 행 연산자IN, NOT IN, EXISTS, ANY, ALL다중 행, 다중 열

단일 행 서브쿼리

서브쿼리 결과가 1개인것

SELECT * FROM employees a
WHERE a.salary = (SELECT salary FROM employees WHERE last_name = 'De Haan')

서브쿼리 결과가 1개

다중 행 서브쿼리

서브쿼리 결과가 여러개

SELECT * FROM employees WHERE salary

IN (SELECT MIN(salary) FROM employees GROUP BY department_id)

서브쿼리 결과가 여러개

다중행 연산자

IN, NOT IN, EXISTS, ANY, ALL 사용

다중 열 서브쿼리

서브쿼리 열이 여러개

SELECT *
FROM employees
WHERE (job_id, salary) IN
(SELECT job_id, MIN(salary) FROM employees GROUP BY job_id)

열이 여러개

FROM절 서브쿼리 (인라인 뷰)

from절 에서도 서브쿼리 작성이 가능

뷰와 같은역할을 하기 때문에 인라인뷰라고도 한다.

SELECT *
FROM employees A,
(SELECT department_id FROM departments WHERE department_name = 'IT') B
WHERE A.department_id = B.department_id

profile
거북이는 오늘도 걷는다

0개의 댓글