Spring(mysql) 게시판 이전글 다음글 가져오기

북마크 추가

 

 

5 다음글

4 다음글

3 현재글

2 이전글

1 이전글

 

위와 같이 5개를 뽑아오는데 이전 글 2개 + 현재 글 + 다음 글 2개 를 뽑아 올 것이다.

 

UNION ALL을 사용해서 현재 글 번호보다가 큰 게시물을 두개 작은 게시물을 두개 현재 게시물 1개 총 5개를 뽑는다.

 

 

 

쿼리:

 

 

SELECT * FROM 테이블명 WHERE seq = #{seq} 

UNION ALL (

SELECT * FROM 테이블명WHERE <![CDATA[seq < #{seq}]]>  ORDER BY seq DESC LIMIT 2)

UNION ALL (

SELECT * FROM 테이블명 WHERE <![CDATA[seq > #{seq}]]>  ORDER BY seq ASC LIMIT 2)

ORDER BY seq DESC; 

 

seq는 게시물 번호 PK이고 다음 게시물을 뽑을때는 내림 차순, 이전 게시물을 뽑을 때는 오름 차순으로 정렬 시켜줘야 한다.

 

또 한가지 주의 할 점은 부등호를 사용할 때  <![CDATA[​ ]]>​ 로 묶어 주지 않으면 오류가 발생한다.

 

 

 

AD
관리자
2014-08-11 07:52
SHARE