SW/MySQL

MySQL : 서브쿼리 : 조건문 : 사용방법, 예제

얇은생각 2020. 1. 25. 07:30
반응형

서브 쿼리

쿼리문 안에 쿼리문이 있는 것을 서브 쿼리라고 합니다.

조건문을 만들 떄 값을 직접 지정하지 못하고, 쿼리문을 통해 구해와야 할 경우가 있습니다. 이 떄 서브 쿼리를 통해 값을 구해와 조건문을 완성할 수 있습니다.

 

 

 

예제

# 현재 받는 급여와 평균보다 많이 받는 사원들의 사원 번호, 급여액을 가져옵니다.

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을 가져옵니다.

select a1.emp_no, a1.first_name
from employees a1, dept_emp a2
where a1.emp_no = a2.emp_no and a2.dept_no = 'd001';

select emp_no, first_name
from employees
where emp_no in (
	select emp_no from dept_emp where dept_no = 'd001'
    );

두 쿼리는 같은 결과를 반환합니다. 개발자 취향에 맞게,  join 문을 사용하던가, 서브 쿼리를 활용해 원하는 결과를 얻을 수 있습니다.

 

 

# 1960년 이후에 태어난 사원들이 근무하고 있는 사원들의 사원번호, 근무 부서 번호를 가져옵니다.

select emp_no, dept_no
from dept_emp
where emp_no in (
	select emp_no from employees where birth_date >= '1960-01-01'
    );

우선 1960년 이후에 태어난 사원들의 번호를 가져온 뒤, 해당하는 사원들의 번호와 근무 부서 번호를 가져와 순차적으로 문제를 해결합니다.

반응형