[업무 지식]/MySQL
[조건 서브쿼리] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
에디터 윤슬
2024. 10. 13. 10:41
≣ 목차
링크
https://school.programmers.co.kr/learn/courses/30/lessons/164671
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
정답 1
select concat('/home/grep/src', '/', b.board_id, '/', file_id, file_name, file_ext) as file_path
from used_goods_board b
inner join used_goods_file f
on b.board_id = f.board_id
where views = (
select max(views)
from used_goods_board
)
order by file_id desc
정답 2
with maxveiws as (
select board_id
from used_goods_board
where views in (select max(views) from used_goods_board)
)
select concat('/home/grep/src', '/', fi.board_id, '/', file_id, file_name, file_ext) as file_path
from used_goods_file fi
join maxveiws m
on m.board_id = fi.board_id
order by file_id desc;
해설
- 파일명 이어 붙이기는 concat 사용
- 조회수가 가장 높은 게시물을 찾는 '자동화'를 위해(매번 변경되고, 매번 수정할 수 없어) select로 서브 쿼리 사용
- 서브쿼리의 조건화
새롭게 이해한 내용
서브쿼리를 활용하여 조건으로 지정할 수 있다.