본문 바로가기

Mysql/Mysql 기초

mysql 서브쿼리

반응형

서브 쿼리

 

쿼리문 안에 쿼리문이 있는것을 서브 쿼리라고 부른다
조건문등을 만들떄 값을 직접 지정하지 못하고 쿼리문을 통해 구해와야 할 경우 서브 쿼리를 통해 값을 구해와 조건문을 완성 할 수 있다

 

-- 서브 쿼리
-- 쿼리문 안에 쿼리문이 있는것을 서브 쿼리라고 부른다
-- 조건문등을 만들떄 값을 직접 지정하지 못하고 쿼리문을 통해 구해와야 할 경우 서브 쿼리를 통해 갑승ㄹ 구해와 조건문을 완성 할 수 있다

-- 현재 받는 급여의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다
select avg(salary) from salaries;
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 a.emp_no, first_name from employees a, dept_emp b where a.emp_no = b.emp_no and b.dept_no = 'd001';

-- 서브쿼리로 풀기 
select emp_no, dept_no from dept_emp where dept_no = 'd001';
select * from employees;
select emp_no, first_name from employees  where emp_no in(select emp_no from dept_emp where dept_no = 'd001');

-- 1960 년 이후에 태어난 사원들이 근무하고 사워들의 사원번호, 근무 부서번호를 가져온다
-- join으로 풀기
select a.emp_no, dept_no  from employees a, dept_emp b where a.emp_no = b.emp_no and birth_date >= '1960-01-01';

-- 서브 쿼리로 풀기
select emp_no from employees where 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 > Mysql 기초' 카테고리의 다른 글

mysql 기초 set(합집합, 교집합, 차집합)  (0) 2020.07.09
mysql join  (0) 2020.07.09
mysql 그룹함수  (0) 2020.07.09
mysql 기초 날짜 함수  (0) 2020.07.09
mysql 문자열함수  (0) 2020.07.09