[내배캠 Spring TIL] MySQL Subquery 썸네일

[내배캠 Spring TIL] MySQL Subquery

MySQL
Subquery
2024년 7월 23일

SQL 문제를 풀며 배웠던 Subquery에 대해 정리해보려 한다.

Subquery #

Subquery는 다른 쿼리 내부에 포함되어 있는 쿼리를 의미한다.

서브쿼리는 ()로 감싸져서 표현된다.

Where문에서 사용될 때 #

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC

위 쿼리는 내가 작성한 즐겨찾기가 가장 많은 식당 정보 출력하기 문제의 정답이다.


FOOD_TYPEFAVORITES이 가장 많은 가게의 정보를 출력하는 문제인데, 이 문제를 처음 풀때는 Subquery를 사용하지 않고 FOOD_TYPE을 기준으로 GRUOP BY를 하여 풀려고 하였다.

하지만 GRUOP BY는 가장 FAVORITES이 많은 가게의 정보를 보여주지 않고, 저장된 순서중 첫번째 순서의 정보를 보여주기 때문에 정답이 아니다.


Where문에서 서브쿼리를 사용해 FOOD_TYPE과 그 MAX(FAVORITES)의 값을 구해 Where의 조건으로 사용하여 각 FOOD_TYPEMAX(FAVORITES)에 해당하는 가게만 보여주게 할 수 있다.

사용가능한 곳 #

  • SELECT
  • FROM
  • WHERE
  • HAVING
  • ORDER BY
  • INSERT문의 VALUES 부분
  • UPDATE문의 SET 부분

아직 WHERE절에서만 사용해 보았지만 다른 사용처도 있어서 복잡한 쿼리에 사용할 수 있을 것 같다.


최근 게시물

김진근 • © 2025