[Mysql/Oracle] order by 특정값(순서) 우선정렬
컨텐츠 정보
- 7,946 조회
- 0 추천
- 목록
본문
출처 : 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
등록된 댓글이 없습니다.