Backend/Database & SQL

[SQL] 게시판 다음글 / 이전글 SQL문

keepbang 2021. 4. 7. 01:01

게시판을 만들 때 보면 다음 글과 이전 글에 갈 수 있게 만들어야 되는데

데이터베이스에서 게시판 데이터를 꺼내올 때
게시판 테이블에 하나의 게시판 데이터가 있고 게시글이 차례대로 있으면
아래와 같이 SELECT 문을 써주면 된다.

//- 다음 글 -  
SELECT *  
FROM '게시판 테이블'  
WHERE '게시글 번호' = '현재 게시글 번호 + 1';  

//- 이전 글 -  
SELECT *  
FROM '게시판 테이블'  
WHERE '게시글 번호' = '현재 게시글 번호 - 1';

하지만 게시판 테이블 안에 여러 게시판의 데이터가 관리되면

게시판 번호가 똑같지만 글번호 차이가 많이 나게 된다.

그리고 게시판이라는 것이 삭제가 돼서 번호와 번호 사이의 간격이 일정하지 않을 수도 있다.

이럴 때는 아래 SELECT 문처럼 쓰면 된다.

-- 다음 글
SELECT MIN('게시글 번호'),*
FROM '게시판 테이블'
WHERE '게시글 번호' > '현재 게시글 번호' and '게시판 번호' = '현재 게시판 번호'

-- 이전 글 -
SELECT MAX('게시글 번호'),*
FROM '게시판 테이블'
WHERE '게시글 번호' < '현재 게시글 번호' and '게시판 번호' = '현재 게시판 번호'

게시글 번호가 현재 게시글 번호보다 큰 게시글 번호 중에 가장 작은 번호가 다음 글이 되고,

게시글 번호가 현재 게시글 번호보다 작은 게시글 번호 중 가장 큰 번호가 이전 글이 된다.