개발자의 끄적끄적

[oracle/mysql] 이전글, 다음글 쿼리 본문

개발/sql

[oracle/mysql] 이전글, 다음글 쿼리

효벨 2020. 6. 5. 03:00
728x90
반응형

[oracle/mysql] 이전글, 다음글 쿼리

 

1. oracle

간단하게 LEAD, LAG를 통해 이전글, 다음글을 구해봅니다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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;

 

2. mysql

limit를 이용해서 현재 글(#{no}) 보다 큰 녀석을 1개, 작은 녀석을 1개 가져옵니다.

1

2

3

4

5

6

7

8

9

10

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),

   );

 



출처: https://graykim.tistory.com/218 [一以貫之]

반응형

'개발 > sql' 카테고리의 다른 글

[MySQL] 인덱스 생성, 조회 [펌]  (0) 2020.06.24
[mysql] insert id 가져오기  (0) 2020.06.16
[sql] 계층형 트리구조 쿼리 [펌]  (0) 2020.06.04
[MySQL] GROUP BY , HAVING [펌]  (0) 2020.06.04
[mysql] GROUP BY와 HAVING [펌]  (0) 2020.06.03
Comments