특정 게시물 앞, 뒤 레코드값 출력
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 " ;
'SQL' 카테고리의 다른 글
[MySQL] 테이블 생성 및 Text 대용량 자료 DB 업로드, character set 확인 (0) | 2015.01.10 |
---|---|
MySQL에서 대용량 테이블의 경우 성능 개선을 위한 10 가지 방안 (0) | 2015.01.10 |
[오라클] SYSDBA 접속 및 유저 생성, 권한부여 (0) | 2014.12.25 |
[오라클] SQL 실습을 위한 오라클 11g 설치 (0) | 2014.12.25 |
SQL 서브쿼리 (0) | 2014.12.19 |