서브쿼리는 다른 쿼리 내부에 포함되어있는 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;
'MySQL, DBMS' 카테고리의 다른 글
[MySQL] - 문자열 함수 (0) | 2023.03.09 |
---|---|
[MySQL] - 수학, 통계함수 (0) | 2023.03.09 |
[MySQL] SELECT 합치기 - UNION (0) | 2023.03.09 |
[MySQL] - JOIN (INNER, LEFT, RIGHT) (0) | 2023.03.09 |
[MySQL] - CASE문 (0) | 2023.03.09 |