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[ ]]> 로 묶어 주지 않으면 오류가 발생한다.