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
남을 비난하는 것만큼 쉬운 일은 없다. 어떤 일이 그릇되었다는 것을 아는 데는 그리 많은 것이 필요하지 않다. 하지만 어떻게 하면 그것을 다시 바르게 할 수 있는가를 아는 데는 남다른 눈썰미가 있어야 한다. (빌 로저스)