order by case when

Database/Mysql 2016. 10. 27. 15:57

테이블의 특정 조건의 데이터는 오름차순, 특정 조건의 데이터는 내림차순이 가능할까...


이벤트가 있다.

이벤트 종료일이 10/20 부터 10/30 일 까지가 있다.

오늘이 10/25 일 이라면 이벤트 종료 임박 순서로 나열하고자 때,

10/25 ~ 30 일까지 오름차순, 그 뒤에 10/24 ~ 20 일까지가 내림차순으로 나열되어야 한다.


order by 

case when event_edate >= NOW() then event_edate end asc,

case when event_edate < NOW() then event_edate end desc


단순하게 생각하고 쿼리를 날렸더니 다음과 같은 결과가 나왔다.


10/24 ~ 20, 10/25 ~ 30


음... 순서가 지맘대로 나왔군. 저 두 순서만 바꾸면 되겠구나 해서...


order by 

case when event_edate < NOW() then event_edate end desc,

case when event_edate >= NOW() then event_edate end asc


했더니만 결과는 같았다 ㅡㅡ

아래처럼 해결...


order by

case when event_edate >= NOW() then 1 else 2 end,

case when event_edate >= NOW() then event_edate + 0 end asc,

case when event_edate < NOW() then event_edate + 0 end desc



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,