order by 정렬

order by 정렬

QA

order by 정렬

본문

wr_1, wr_2. wr_3

위 세개에서

wr_1 값은 1 혹은 0

wr_2 값은 이름

wr_3 값은 글 올려진 날짜

입니다.

 

정렬하고 싶은 것은

order by wr_1 desc, wr_3

이렇게 하면 wr_1 값이 1이 먼저 출력되면서 올려진 날자대로 정렬됩니다.

이것을

wr_1 값이 1 이면 wr_2 값의 이름 가나다 순으로 
wr_1 값이 0 이면 wr_3 값의 날짜순 으로 정렬 하고 싶습니다.​

 

즉 order by wr_1 desc, wr_3 하면 아래와 같이 출력됩니다.

wr_1

wr_2

wr_3

1 홍길동 12일
1 임꺽정 15일
1 삼돌이 18일
0 사순이 2일
0 삼순이 16일

 

아래와 같이 출력하고 싶습니다. wr_1 값이 1이면 이름순 0이면 날짜순

 

wr_1

wr_2

wr_3

1 삼돌이 18일
1 임꺽정 15일
1 홍길동 12일
0 사순이 2일
0 삼순이 16일

 

고맙습니다. ^^ 

이 질문에 댓글 쓰기 :

답변 3

order by wr_1 desc, case when wr_1='1' then wr_2 else wr_3 end

이렇게 하시면 되요 

order by wr_1 desc, case when wr_1='1' then wr_2 else wr_3 end
이렇게 하고 사이트 운영해 봤더니 문제는, 가나다순과 가나다 역순이 같이 움직입니다.


wr_1 값이 1 이면 wr_2 가나다 순이 맞게 출력되는데, wr_1 값이 0이면 wr_3은 역순으로 출력됩니다.

그래서
order by wr_1 desc, case when wr_1='1' then wr_2 else wr_3 end desc
했더니, wr_1 값은 가나다 역순, wr_3 값은 가나다 순 이렇게 출력됩니다.

결국은
order by wr_1 desc, case when wr_1='1' then wr_2 end, case when wr_1='0' wr_3 end
이렇게 하니까
wr_1 값이 1 이면 wr_2 가나다 순, wr_1 값이 0이면 wr_3도 가나다 순로 출력됩니다.

order by wr_1 desc, case when wr_1='1' then wr_2 else wr_3 end  이 소수가 간단하고 편해 보였는데,
별 상관 없겠지요?

고맙습니다. ^^

 

요렇게 하면 될것 같은데요.. 테스트는 안해봤습니다.

 

 

SELECT  *,  if(​wr_1 = 1, ​wr_2, wr_3 ) sub_order  FROM .... WHERE ...  ORDER BY  wr_1 DESC,  sub_order

select * from `테이블명`
order by wr_1 desc
, case when (wr_1=1) then wr_2 end asc 

, case when (wr_1=0) then wr_3 end asc 

 

이런 코드를 참고해 보시기 바랍니다.

 

관심가져 주셔서 대단히 고맙습니다. ^^

일단은 채택한 소스가 원하는대로 움직여주지 않아 관리자님 소스대로 했더니 원하는 결과로 잘 되는 것 같습니다.

order by wr_1 desc, case when wr_1='1' then wr_2 else wr_3 end  이 소스가 간단하긴 한것 같습니다만...

답변을 작성하시기 전에 로그인 해주세요.
전체 30
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT