CASE WHEN ORDER BY 각각 오름 내림차순
본문
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}