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 ;



관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
유쾌한 사람은 자기 일에만 몰두하는 사람이 아니다. 때론 자신의 일을 전부 제쳐놓고 타인의 문제에 전력을 쏟는 열정이 있는 사람이다. 타인에게 자신의 힘을 나누어주고 마음을 열어주는 것은 자신의 삶을 행복하게 만드는 방법이다.