MySQL, DBMS
[MySQL] 서브쿼리(subquery)
jny0
2023. 3. 9. 19:02
서브쿼리는 다른 쿼리 내부에 포함되어있는 SELECT문이다.
서브쿼리는 쿼리를 구조화시켜, 쿼리의 각 부분을 명확하게 구분할 수 있게 해주고, 복잡한 JOIN이나 UNION보다 좀 더 읽기 수월하다.
- 서브쿼리는 반드시 소괄호
()
로 감싸져야한다. - 서브쿼리에서는 ORDER BY 를 설정해도 효과가 없다
- SQL standard에서 정한 DB 테이블의 정의에서는, 테이블을 채우고 있는 데이터의 order는 아무런 의미가 없기 때문
- 서브쿼리 내 ORDER BY 뒤에 LIMIT를 설정하거나
- ORDER BY를 제일 바깥 최상위 절로 옮기면 된다. (추천)
- FROM절에서 사용되는 서브쿼리는 AS를 사용해 이름을 지정해주어야한다.
SELECT E.id, E.name, E.salary,
D.id AS deptId,
D.maxSalary
FROM emp AS E
INNER JOIN (
SELECT E.deptId AS id,
MAX(E.salary) AS maxSalary
FROM emp AS E
GROUP BY E.deptId
) AS D
ON E.deptId = D.id;