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