CASE WHEN ORDER BY 각각 오름 내림차순

CASE WHEN ORDER BY 각각 오름 내림차순

QA

CASE WHEN ORDER BY 각각 오름 내림차순

답변 2

본문

SELECT *,
    CASE    WHEN  vs_lv = {$vs_lv} AND vs_id={$member['mb_id']} AND vs_win = '' THEN 1
            WHEN  vs_lv = {$vs_lv} AND vs_win = '' THEN 2
            WHEN  vs_lv = {$vs_lv} THEN 3
            ELSE 4 END AS ord1
    FROM vsgababo 
    ORDER BY ord1 ASC, vs_datetime DESC LIMIT {$lim_start} , {$lim}
 

위와 코드에서 1과 2는 vs_datetime ASC 정렬 3은 vs_datetime DESC로 정렬하고 싶은데

어떻게 해야할지 아무리 이리저리 해봐도 원하는 답을 못찾았습니다.

 

이 질문에 댓글 쓰기 :

답변 2

일반적인 방법으로는 힘들것 같고

쿼리를 조금 변태같이 꼬아야 가능할것 같은데

그렇게 해서 완성된 쿼리가 얼마만큼 성능을 보장할지는 모르겠습니다.

 

정확히 무엇을 의도하시는지는 모르겠으나

다른 방법을 찾아보시는걸 추천드립니다.

Select * from ( order by 없는 기존 query) A order by ord1

아니면

SELECT *,

    CASE WHEN vs_lv = {$vs_lv} AND vs_id={$member['mb_id']} AND vs_win = '' THEN 1

            WHEN vs_lv = {$vs_lv} AND vs_win = '' THEN 2

            WHEN vs_lv = {$vs_lv} THEN 3

            ELSE 4 END AS ord1

    FROM vsgababo 

    ORDER BY

 

CASE WHEN vs_lv = {$vs_lv} AND vs_id={$member['mb_id']} AND vs_win = '' THEN 1

 

            WHEN vs_lv = {$vs_lv} AND vs_win = '' THEN 2

 

            WHEN vs_lv = {$vs_lv} THEN 3

 

            ELSE 4 END

 ASC, vs_datetime DESC LIMIT {$lim_start} , {$lim}

알려주신데로 하면 모두 내림차순으로 정렬되네요.
혹시 알려주신 Select * from ( order by 없는 기존 query) A order by ord1 를 조금더 상세히 알려주실수 없을까요. 어떤 방법인지 공부좀 해보게요

select * from (
SELECT *,
    CASE    WHEN  vs_lv = {$vs_lv} AND vs_id={$member['mb_id']} AND vs_win = '' THEN 1
            WHEN  vs_lv = {$vs_lv} AND vs_win = '' THEN 2
            WHEN  vs_lv = {$vs_lv} THEN 3
            ELSE 4 END AS ord1
    FROM vsgababo
 ) A
    ORDER BY ord1 ASC, vs_datetime DESC LIMIT {$lim_start} , {$lim}

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,331
© SIRSOFT
현재 페이지 제일 처음으로