본문 바로가기

개발/DB

[MySQL] 내가 원하는 순서대로 Order by 조건을 주자

최근 회사에서 FE에서 특정 필드의 순서를 담아 API 요청을 하고, 그 순서대로 json 형태로 return을 해야하는 케이스가 발생했다.

 

결국 깔끔하게 가져오려면 API에서 조건 반복을 돌리기보다는 DB의 쿼리로 조건을 뽑아내고 싶었다.

 

하지만 일반적인 경우 order by 조건은 특정 컬럼을 기준으로 오름(내림)차순만 가능했다.

 

하지만 아래와 같이 'FIELD' 값으로 컬럼을 지정하고 순서를 입력하게 된다면. 내가 원하는 순서대로 조회가 가능했다.

SELECT
	VALUE
FROM
	TABLE
ORDER BY
	FIELD(VALUE, 'val3', 'val1', 'val2');

하지만, 문제는 DB단에서 처리한다고는 했지만, 실제로는 QueryDSL을 사용하여 조회 쿼리를 수행하고 있었다는 것이다.

 

이에 대한 해결은 바로 다음에 다루기로 한다.