<!-- select review_id, products_id, review_writter, review_title, review_content, review_star, review_img, review_date, review_hit-->
<!-- from ( select rownum rn, review_id, products_id, review_writter, review_title, review_content, review_star, review_img, review_date, review_hit-->
<!-- from review-->
<!-- where rownum <= ( #{pageNum} * #{amount})-->
<!-- order by review_id desc )-->
<!-- where rn > (#{pageNum} -1) * #{amount}-->
페이징 쿼리를 이렇게 작성하고, order by를 어느 위치에 끼워도
그 페이지 안에서 순서만 바뀔 뿐 전체 페이지가 순서대로 정렬되지 않는 오류가 발생했다
ROWNUM : 조회된 순서대로 순번을 매기는 고유 변수
ORDER BY : 데이터 정렬 시 사용되는 기능
유의점은 ORDER BY로 데이터 정렬이 되기 전에, ROWNUM이 매겨진다는 것
https://ajdahrdl.tistory.com/23 => 참고 블로그
그러므로
select * from (
select rownum rn, temp.* from
(select review_id, products_id, review_writter, review_title, review_content, review_star, review_img, review_date, review_hit
from review
order by review_id desc ) temp
where rownum <= ( #{pageNum} * #{amount}))
where rn > (#{pageNum} -1) * #{amount}
이렇게 rownum을 밖으로 빼고, 안의 쿼리를 temp라는 as로 이름 지어 조회하면
최신글을 쓴 순서대로 정렬이 완료된다!
'편안한코딩생활 > 오류 해결 일지' 카테고리의 다른 글
스프링부트 한글 깨짐 오류(jpa data utf-8 encoding) (0) | 2023.08.03 |
---|---|
타임리프 문법관련 오류(RFC 7230 and RFC 3986) (0) | 2023.06.21 |
xml 경로 설정 오류 (0) | 2023.06.20 |