개발이야기/MySQL

[MySQL] order by 특정 값 먼저 정렬 하기 (order by field, order by case when)

후린개발자 2023. 3. 21.
반응형

ORDER BY FIELD 구문을 사용하면 결과를 지정된 순서대로 정렬할 수 있습니다. 특정 필드에서 반환되는 값에 대해 정렬 순서를 지정할 수 있습니다.

 

아래는 test_db의 테이블 구조입니다.

 

test_db 테이블 DATA

 

select * from test_db
order by join_dt desc;

위의 쿼리는 일반적인 order by의 사용 방법입니다. join_dt의 field에 대해서 내림차순으로 정렬하고 있습니다.

아래는 쿼리 결과입니다.

 

join_dt 내림차순 정렬

 

다음은 order by field 구문을 사용해서 group 열을 기준으로 B, C, A 순서대로 정렬하는 쿼리입니다.

 

select * from test_db
order by FIELD(`group`, 'B', 'C', 'A');

 

group 열 기준으로 B, C, A 순서대로 정렬

 

위와 같은 결과를 도출할 수 있는 방법은 order by에 case 문을 사용하시면 됩니다. 조건에 따라서 반환되는 값을 기반으로 정렬 순서를 지정할 수 있습니다.

select * from test_db
ORDER BY 
CASE 
WHEN `group` = 'B' THEN 1 
WHEN `group` = 'C' THEN 2 
ELSE 	3 
END;

order by case when 결과

 

간단하지만 기억이 잘 안나 올려 놉니다!

반응형

댓글

💲 추천 글