[MYSQL] WHERE 우선순위 검색 질문...도와주세요 0 2 1,702

by pen31 [SQL Query] 우선순위 mysql 쿼리 [2020.06.11 11:04:38]


아래와 같은 검색 폼에서 쿼리를 어떻게 짜는지 하나도 감이 안옵니다..

우선순위를 order로 해결하면 되는 줄 알았는데 그게 아니더군요.

한가지 예로 현재 상황을 설명하겠습니다!

[ex.01]

검색 - [키워드: cs] [성별:여성]

우선순위 - [1순위:키워드] [2순위:성별]

위와 같은 설정인 경우에는 남,여 상관없이 키워드가 cs인 유저가 우선조회되고

그 다음에 여성인 유저가 조회되어야 합니다.

 

혹시 이게 결과 내 재검색 개념인가요 ?

결과 내 재검색인 경우에, 우선순위를 동적으로 처리하는데

비즈니스 로직에서 각 case마다 분기해야 되는건가요 ?

 

select문 한번에 끝나지 않는건가요 ? 제 쿼리 실력으로는 도저히 감이 안와서 질문 남깁니다...

답변주시면 감사하겠습니다. 도와주세요

 

by 기린기린 [2020.06.11 11:39:49]

두 조건은 AND 조건인가요? AND 조건이라면 동적으로 AND 조건을 생성하면 될 것이고,
OR 조건인가요? OR조건이면서 우선순위가 표현순서에 대한 개념이라면
UNION ALL 사용하여 1, 2 순위대로 나열하여 표현할 수 있습니다.
이 경우 동적으로 UNION ALL 절 생성하면 되겠네요.
아니면
1순위, 2순위가 갖는 차이점이 무엇인가요?


by 마농 [2020.06.11 12:06:51]
SELECT *
  FROM t
 WHERE xxx LIKE '%cs%'
    OR yyy = '여성'
 ORDER BY CASE WHEN xxx LIKE '%cs%' THEN 1 ELSE 2 END
        , CASE WHEN yyy = '여성'    THEN 1 ELSE 2 END
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입