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
나무에게는 무엇이든 달라고 요구하는 뻔뻔한 친구가 아니라, 자신을 가꿔줄 친구들이 필요하다." (지금보다 더 나은 내가 되고 싶다중에서)