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
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)