키워드를 포함한것 우선으로 5개 쿼리문 가능 한가요? 채택완료
아길이
9년 전
조회 5,652
최근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개
채택된 답변
+20 포인트
9년 전
</p><p>SELECT *</p><p>FROM Table</p><p>WHERE fild = '$keyword'</p><p>UNION ALL</p><p>(</p><p style="margin-left: 40px;">SELECT * </p><p style="margin-left: 40px;">FROM Table</p><p style="margin-left: 40px;">WHERE state = 1</p><p style="margin-left: 0px;">)</p><p style="margin-left: 0px;">LIMIT 0, 5;</p><p style="margin-left: 0px;">
복잡하게 생각도 해봤는데
그냥 같은 테이블 유니온 걸어서
초반에 검색어 걸리는 갯수 가져오고
state 1 인값 가져오면
검색어 부족한 부분을 state 1인값을 가져오므로
마지막에 LIMIT 걸어서 처리면 될거 같네요.
order by 이슈가 있다면..
</p><p style="font-size: 14.6667px;">SELECT * FROM </p><p style="font-size: 14.6667px;">(</p><p style="font-size: 14.6667px;">SELECT *</p><p style="font-size: 14.6667px;">FROM Table</p><p style="font-size: 14.6667px;">WHERE fild = '$keyword'</p><p style="font-size: 14.6667px;">UNION ALL</p><p style="font-size: 14.6667px;">(</p><p style="margin-left: 40px; font-size: 14.6667px;">SELECT * </p><p style="margin-left: 40px; font-size: 14.6667px;">FROM Table</p><p style="margin-left: 40px; font-size: 14.6667px;">WHERE state = 1</p><p style="font-size: 14.6667px;">)</p><p style="font-size: 14.6667px;">LIMIT 0, 5</p><p style="font-size: 14.6667px;">)A</p><p style="font-size: 14.6667px;">ORDER BY A.deep;</p><p style="font-size: 14.6667px;">
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
아길이
9년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
잘 테스트 해보겠습니다