[oracle/mysql] 이전글, 다음글 쿼리
1. oracle
간단하게 LEAD, LAG를 통해 이전글, 다음글을 구해봅니다.
SELECT A.* FROM ( SELECT BOARD_NO, BOARD_TITLE, BOARD_TYPE, LEAD(BOARD_NO, 1) OVER (ORDER BY BOARD_NO DESC) AS NEXT_NO, LEAD(BOARD_TITLE, 1, '다음글이 없습니다') OVER (ORDER BY BOARD_NO DESC) AS NEXT_TITLE, LAG(BOARD_NO, 1) OVER (ORDER BY BOARD_NO DESC) AS PRE_NO, LAG(BOARD_TITLE, 1, '이전글이 없습니다') OVER (ORDER BY BOARD_NO DESC) AS PRE_TITLE FROM BOARD_TB ) A WHERE A.BOARD_TYPE = 1;
limit를 이용해서 현재 글(#{no}) 보다 큰 녀석을 1개, 작은 녀석을 1개 가져옵니다.
SELECT BOARD_NO FROM BOARD_TB WHERE BOARD_NO IN ( (SELECT BOARD_NO FROM BOARD_TB WHERE BOARD_NO < #{no} ORDER BY BOARD_NO DESC LIMIT 1), (SELECT BOARD_NO FROM BOARD_TB WHERE BOARD_NO > #{no} ORDER BY BOARD_NO LIMIT 1), );
'개발개발 > db' 카테고리의 다른 글
[ORACLE] RANK(순위) 함수 (0) | 2021.03.05 |
---|---|
[ORACLE] 날짜 조회 (0) | 2018.10.24 |
[mssql] mssql의 convert 함수 (날짜변환함수) (0) | 2018.06.26 |
[oracle/mysql/mssql] 날짜 목록 구하기 (조인해서 응용가능) (0) | 2018.04.18 |
[oracle/mysql/mssql] oracle to_char를 mysql에서 사용하려면 (1) | 2018.04.18 |