728x90

특정 게시물 앞, 뒤 레코드값 출력


MySQL에서 원하는 게시물 앞뒤 5개를 출력하고 싶어서 MySQl 쿼리문을 날려봤다.

결과가 어떻게 나오는지 달라진다.

이전 : SELECT * FROM 테이블 WHERE 필드 < 번호 ORDER BY 필드 DESC LIMIT 5;
해당 : SELECT * FROM 테이블 WHERE 필드 = 번호;
이후 : SELECT * FROM 테이블 WHERE 필드 > 번호 ORDER BY 필드 LIMIT 5;



이걸 연결해서 출력하고 싶어서 오라클 전문가에게 도움을 청해서 도움을 받아서 실행을 해봤다.



출력하고자 하는 uid 값이 제대로 출력이 되었다.


select uid from (
 select * from TABLE_NAME where uid = 10
 union
 select * from (select * from TABLE_NAME where uid > 10 order by uid asc limit 5 ) a
 union
 select * from (select * from TABLE_NAME where uid < 10 order by uid desc limit 5 ) b
 ) c order by uid;

select uid 대신에 select name, email 등과 같은 칼럼을 직접 지정해주면 원하는 것만 결과를 뽑아낼 수가 있다.


만약 PHP 게시판에서 찾는 검색조건에 이걸 넣고 싶다면 어떻게 해야 할까?

보통 검색 조건은 $sqlque .= " and ".$where." like '%".trim($keyword)."%'";

로 되어 있다.

이 경우에는 IN 조건으로 찾으면 된다.

$sqlque .= " and uid IN (select uid from ( select * from ".TABLE_NAME." where uid = '".trim($keyword)."'
 union
 select * from (select * from ".TABLE_NAME." where uid > '".trim($keyword)."' order by uid asc limit 5 ) a
 union
 select * from (select * from ".TABLE_NAME." where uid < '".trim($keyword)."' order by uid desc limit 5 ) b
 ) c order by uid " ;



블로그 이미지

Link2Me

,