본문 바로가기

DataBase/MySQL

서브 쿼리문

1. 서브쿼리문

쿼리문 안에 또 다른 쿼리문이 있는 것을 서브쿼리문이라고 한다.

조건문 등을 작성할 때, 값을 직접 지정하지 못할 경우, 서브쿼리문을 통해 값을 구하고 조건문을 완성한다. 

서브쿼리문을 사용해야하는 상황 중 여러 경우는 join문으로도 해결 가능하다.

서브쿼리문, join문 중 정답은 없으므로 상황에 따라 자유롭게 사용할 수 있도록 경험이 필요할 것 같다.

 

-- 현재 받는 급여액의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다.
select emp_no, salary
from salaries
where salary > (select avg(salary) from salaries where to_date = '9999-01-01') and to_date = '9999-01-01';

-- d001 부서에서 근무하고 있는 사원들의 사원번호와 first_name을 가져온다.
-- join문
select t1.emp_no, t1.first_name
from employees t1, dept_emp t2
where t1.emp_no = t2.emp_no and t2.to_date = '9999-01-01' and t2.dept_no = 'd001';
-- 서브쿼리문
select emp_no, first_name
from employees
where emp_no in (select emp_no from dept_emp where dept_no = 'd001' and to_date = '9999-01-01');

-- 1960년 이후에 태어난 사원들이 근무하고 있는 사원들의 사원번호, 근무 부서 번호를 가져온다.
-- join문
select t2.emp_no, t2.dept_no
from employees t1, dept_emp t2
where t1.emp_no = t2.emp_no and t1.birth_date >= '1960-01-01';
-- 서브쿼리문
select emp_no, dept_no
from dept_emp
where emp_no in (select emp_no from employees where birth_date >= '1960-01-01');

 

[출처]윤재성의 처음 시작하는 MySQL DataBase - 인프런 | 강의 (inflearn.com)

 

'DataBase > MySQL' 카테고리의 다른 글

데이터베이스 관리  (0) 2021.08.06
set  (0) 2021.08.04
join문  (0) 2021.08.02
숫자 함수, 문자열 함수, 날짜 함수, 그룹 함수, Group by & Having 절  (0) 2021.08.01
조건 연산자, 논리 연산자, like  (0) 2021.07.29