강의로 돌아가기
phantoms012@gmail.com

그냥 select board_id, max(views)를 하면 안되는 구나

그냥 select boardid, max(views)를 하면 이상한 게시글 id를 반환함....
정확한 매칭을 위해 Group by board
id를 꼭 쓰고
Desc 내림차 순으로 정렬한 뒤 limit으로 1등만 뽑는 것이 바람직함

만약 나중에 응용해서 3번째로 높은 조회수를 지닌 게시글 뽑으라 하면 row number함수를 쓰면 되지 않을지~

작성중인 코드―solution.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 코드를 입력하세요
-- SELECT concat('/home/grep/src/',f.board_id,'/',f.file_id, f.file_name, f.file_ext) as file_path
-- from used_goods_file f 
-- join used_goods_board b
-- on f.board_id = b.board_id
-- where b.views=(
--     select max(views)
--     from used_goods_board b1) -- where에 max함수를 쓸 수 없어서 서브쿼리로 우회
-- order by f.file_id desc

select concat('/home/grep/src/', f.board_id, '/', f.file_id, f.file_name, f.file_ext) as file_path
from used_goods_file f
join
(
select board_id, max(views)
from used_goods_board
group by board_id
order by max(views) desc
limit 1
)mv
on mv.board_id=f.board_id
order by f.file_id desc
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.