키워드를 포함한것 우선으로 5개 쿼리문 가능 한가요?
본문
최근5건을 쿼리하는데
특정키워드를 제시하면 그 키워드를 포함한 것 우선으로 5개 추출 가능 할까요?
if($keyword)
$search_keyword = " or fild = '$keyword' ";
$sql =" select * from Table where state = 1 {$search_keyword} order by deep limit 0 ,5 " ;
이렇게 or 로 연결하면 키워드가 포함된것 못찾을때가 있고
and 하면 키워드 포함된것만 나오고
키워드 포함된 레코드가 2건밖에 없을때 나머지 3건은 state = 1 인것 3건을 포함시켜 출력 해주면 되는데...
한번의 쿼리문으로 가능 한가요?
감사 합니다
답변 1
SELECT *
FROM Table
WHERE fild = '$keyword'
UNION ALL
(
SELECT *
FROM Table
WHERE state = 1
)
LIMIT 0, 5;
복잡하게 생각도 해봤는데
그냥 같은 테이블 유니온 걸어서
초반에 검색어 걸리는 갯수 가져오고
state 1 인값 가져오면
검색어 부족한 부분을 state 1인값을 가져오므로
마지막에 LIMIT 걸어서 처리면 될거 같네요.
order by 이슈가 있다면..
SELECT * FROM
(
SELECT *
FROM Table
WHERE fild = '$keyword'
UNION ALL
(
SELECT *
FROM Table
WHERE state = 1
)
LIMIT 0, 5
)A
ORDER BY A.deep;
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.