Database/PostgreSQL

[postgresql] 게시판 글 상세화면 쿼리에서 이전글 이전행 다음글 다음행 시퀀스 인덱스 가져오는 쿼리 기본 함수 LAG, LEAD

펌킨고구마 2024. 3. 30. 20:15
728x90
반응형

게시글의 목록화면에서는 이전글 다음글은 쿼리상 행으로 이전글 다음글 인덱스를 가지고 오기 쉬웠는데

상세화면에서 하단에 있을 다음글, 이전글 인덱스를 가져오려니까 어떻게 해야 하나 고민이 되었다.

 

다행이 기본 함수에 관련된 함수가 있어서 쉽게 가져올 수 있었다.

해당 함수는 오라클(ORACLE)이나 마리아디비(Mariadb) 뭐 마리아디비에도 있으니 mysql에도 있지않을까..

 

아무튼 포스트그레sql 에서는 해당 함수를 아래와 같이 사용한다.

 

LAG(컬럼명, 몇번째 행) OVER( ORDER BY 컬럼명)

LEAD(컬럼명, 몇번째 행) OVER( ORDER BY 컬럼명)

LAG(컬럼명, 몇번째 행) OVER( ORDER BY 컬럼명)

LEAD(컬럼명, 몇번째 행) OVER( ORDER BY 컬럼명)

 

예시를 들면 아래와 같이 쓸 수 있다.

LAG(seq, 1) over (order by seq desc)

 

LAG : 이전 행의 값을 가져온다

LEAD : 다음 행의 값을 가져온다.

 

 

 

이렇게 해서 게시글 내에 이전글 다음글 번호를 가져올 수 있었다.

사용한 쿼리도 올려야지

SELECT b.*
FROM (
	SELECT 
    	LAG(seq, 1) over (order by seq desc) AS PREV_SEQ
        ,LEAD(seq, 1) over (order by seq desc) AS NEXT_SEQ
		,seq
        .
        .
        .
        
    FROM board



)b
WHERE b.seq = 1

 

 

728x90
반응형
LIST