테스트 사이트 - 개발 중인 베타 버전입니다

키워드를 포함한것 우선으로 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 포인트
p
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년 전
이런게 서브쿼리라고 하는거군요
잘 테스트 해보겠습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인