Database

[Mysql/Oracle] order by 특정값(순서) 우선정렬

페이지 정보

본문

출처 : https://blog.naver.com/zij08209712/221607262193


필요한 작업

나는 특정컬럼의 데이터가 'F','G', 'H', 'B', 'C', 'I', 'J' 이런식으로 들어가 있을때

'F','G', 'H', 'B', 'C', 'I', 'J' 이 순서대로 정렬하여 데이터를 추출 하고자 한다.

ORACLE / Mysql

order by ( CASE c.CSTATUS2 WHEN 'F' THEN 0 WHEN 'G' THEN 1 WHEN 'H' THEN 2 WHEN 'B' THEN 3 WHEN 'C' THEN 4 WHEN 'I' THEN 5 WHEN 'J' THEN 6 ELSE 7 END )

- 꼭 then 뒤에는 숫자만 들어가야한다. 원하는 순서대로 !

Mysql FIELD() 함수 사용

ORDER BY FIELD(c.CSTATUS2, 'F','G', 'H', 'B', 'C', 'I', 'J') DESC,

참고용 Query (전체 query)

select c.regid, c.companyname, CASE c.CSTATUS2 WHEN 'F' THEN '0' WHEN 'G' THEN '1' WHEN 'H' THEN '2A' WHEN 'B' THEN '2B' WHEN 'C' THEN '2C' WHEN 'I' THEN '3' WHEN 'J' THEN '4' ELSE '7' END as CSTATUS2 , ch.name, ch.position, ch.part, ch.phone, ch.mobile, ch.fax, ch.email, ch.post, ch.address, ch.hq_manager from company c left join company_member ch on c.regid = ch.companyid where c.CSTATUS2 in ( 'F','G', 'H', 'B', 'C', 'I', 'J') order by ( CASE c.CSTATUS2 WHEN 'F' THEN 0 WHEN 'G' THEN 1 WHEN 'H' THEN 2 WHEN 'B' THEN 3 WHEN 'C' THEN 4 WHEN 'I' THEN 5 WHEN 'J' THEN 6 ELSE 7 END ), c.companyname, ch.createdate ;



관련자료

등록된 댓글이 없습니다.
Today's proverb
고개에 오르려고 하다가 꼭대기에 이르지 못했다 하더라도 얼마나 칭찬할 만한 일인가. 자기의 현재의 힘으로 자신을 되돌아보고, 애써 고매한 일을 하면서도 더 커다란 일을 그려본다는 것은 대단히 귀중한 일이다. (세네카)