이전글/다음글 SQL문
2022. 1. 5. 01:18
반응형
SELECT table_idx FROM tableName
WHERE table_idx
IN (
(SELECT table_idx FROM tableName WHERE table_idx < CurrentIndex DESC LIMIT 1),
(SELECT table_idx FROM tableName WHERE table_idx < CurrentIndex ASC LIMIT 1)
);
table_idx에는 해당테이블의 인덱스값, CurrentIndex부분은 #{변수}를 바인딩해주면 된다.
해당 테이블의 특정 인덱스 넘버 전후의 데이터를 가져오는데
왜인지는 모르겠으나 키값 두개는 가져오지 못하는 구조였다 =_=;;
SELECT *,
(SELECT bd_idx FROM book_detail WHERE book_bd_idx = #{book_bd_idx} and <![CDATA[bd_idx < #{bd_idx}]]> ORDER BY bd_idx DESC LIMIT 1) 'PREV'
,(SELECT bd_idx FROM book_detail WHERE book_bd_idx = #{book_bd_idx} and <![CDATA[bd_idx > #{bd_idx}]]> ORDER BY bd_idx ASC LIMIT 1) 'NEXT'
FROM book_detail
WHERE book_bd_idx = #{book_bd_idx} and bd_idx = #{bd_idx};
아예 현재 페이지와 함께 이전/다음글의 인덱스값을 가져와보자는 목적으로 짠 SQL문
문제는 prev, next의 값이 0이 되거나 해당 SQL문의 값이 null일 때도 페이지가 넘어간다는 점이다
이전글/다음글을 클릭 시에 넘어가지 않게 조건문을 걸어주어야 하는데,
부트스트랩 사용 시,
<a> 태그는 링크가 있으면 disabled 속성과 관계없이 링크로 넘어가버리므로 버튼을 사용해서 막는 것이 편했다.
다만, 인덱스값 중 하나가 0이어도 링크에 담기는 점이 거슬려 고민하다가 다시 <a>태그를 사용했다.
Jquery를 써서, 인덱스값이 0일 때는 <a>태그의 removeAttr()메소드로 href 속성을 지워버리는 것으로 해결했다.
※ 위의 SQL문은 현재 인덱스넘버 기준으로 전/후의 인덱스넘버를 가져오고 아래의 SQL문은 현재 데이터에 현재 인덱스넘버 전/후의 인덱스값을 컬럼에 붙여서 불러온다
반응형
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL LAG, LEAD (0) | 2022.02.21 |
---|---|
DB 내 모든 Table truncate 하는 쿼리문 (0) | 2022.01.29 |
SQL문 실행 순서 (0) | 2021.11.30 |
GraphQL이 뭐지? (0) | 2021.11.24 |
MySQL Could not acquire management access for adminstration 에러에 관해 (0) | 2021.10.26 |