SQL/프로그래머스 MySQL with code
프로그래머스 MySQL : [lv.3] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
jamong5
2023. 7. 29. 14:09
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
CONCAT으로 문자열 붙이기, WHERE절 서브쿼리, ORDER BY
JOIN으로 해결할수도 있지만 JOIN보다는 WHERE절 서브쿼리가 빠르다고 생각돼서 WHERE절 서브쿼리문만 작성했습니다.
CONCAT으로 행마다 동적으로 문자열을 붙여서 출력할 수 있습니다.
SELECT CONCAT("/home/grep/src/",BOARD_ID,"/",FILE_ID,FILE_NAME,FILE_EXT) AS FILE_PATH
FROM USED_GOODS_FILE
WHERE BOARD_ID =
(
SELECT BOARD_ID
FROM USED_GOODS_BOARD
ORDER BY views DESC
LIMIT 1
)
ORDER BY FILE_ID DESC
ORDER BY 대신 MAX 활용하기
view수가 가장 높은 행만 필요하므로 order by 정렬은 불필요한 연산들이 포함됩니다. 서브쿼리를 두번 사용하면 불필요한 연산 없이 쿼리문을 작성할 수 있습니다.
SELECT CONCAT("/home/grep/src/",BOARD_ID,"/",FILE_ID,FILE_NAME,FILE_EXT) AS FILE_PATH
FROM USED_GOODS_FILE
WHERE BOARD_ID =
(
SELECT BOARD_ID
FROM USED_GOODS_BOARD
WHERE VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
)
ORDER BY FILE_ID DESC