❓실습문제를 푸는데 나와 강사님의 코드가 다른 부분 (USING) 이 있어 공부하고자 작성
❗쿼리의 중복을 제거하고 사용할 수 있으므로 사용 연습 필요
# 8. 급여등급테이블 sal_grade의 등급별 최대급여(MAX_SAL)보다 많이 받는 직원들의 사원명, 직급명, 급여, 연봉을 조회하시오.
# (사원테이블과 급여등급테이블을 SAL_LEVEL컬럼기준으로 동등(등가) 조인할 것)
-- My Query
select e.EMP_NAME, j.JOB_NAME, e.SALARY, e.SALARY * 12 as 연봉
from employee e, job j, sal_grade s
where e.JOB_CODE = j.JOB_CODE
and e.SAL_LEVEL = s.SAL_LEVEL
and e.SALARY > s.MAX_SAL;
-- Teacher's Query
select
emp_name,
job_name,
salary,
(salary + salary * ifnull(bonus, 0)) * 12 annual_sal,
max_sal
from
employee e
join job j on(e.job_code = j.job_code)
join sal_grade s using(sal_level)
where
e.salary > s.max_sal;
✅ 개념
USING(column_name)은 두 테이블에 동일한 이름의 컬럼이 있을 때 ON 대신 더 간단하게 조인 조건을 지정할 수 있는 문법
✅ 특징
- 칼럼명이 같을 때만 사용 가능
- USING을 사용하면 별칭을 붙이지 않아도 됨
✅ ON vs USING 비교
ON | ON e.sal_level = s.sal_level |
USING | USING(sal_level) (컬럼명 같을 때만 가능) |
⚠️ 주의점
- USING 쓸 땐 해당 컬럼명 양쪽 테이블에 있어야 하고, 이름도 같아야 함
- 컬럼 이름이 다르면 무조건 ON 사용해야 함
'공부 > SQL' 카테고리의 다른 글
mysql > MySQL 8.0.13 이상에서의 DEFAULT 문법 정리 (0) | 2025.04.27 |
---|---|
mysql > group_concat (0) | 2025.04.27 |
물고기 종류 별 대어 찾기 (0) | 2025.01.04 |
조건별로 분류하여 주문상태 출력하기 (0) | 2025.01.04 |
중성화 여부 파악하기 (0) | 2025.01.04 |