데이터 출력 시 정렬 기준을 직접 지정해야 하는 상황이 있습니다.
예를 들어 status 값을 아래 순서로 보여주고 싶다고 해볼게요.
그런데 기본 정렬을 적용하면 알파벳 순서 때문에 done → pending → processing 또는 그 역순으로 의도와 다르게 정렬되곤 합니다.
이럴 때 간단하게 사용할 수 있는 문법이 바로 ORDER BY FIELD() 입니다.
| status | count |
|---|---|
| pending | 120 |
| done | 80 |
| processing | 95 |
원하는 순서 : pending → processing → done
SELECT status
, count
FROM orders
ORDER BY FIELD(status, 'pending', 'processing', 'done');
| status | count |
|---|---|
| pending | 120 |
| processing | 95 |
| done | 80 |
정렬 순서를 FIELD() 안에서 직접 정의했기 때문에, 지정한 순서 그대로 출력됩니다.
✔️ 커스텀 정렬이 필요할 때는 ORDER BY FIELD()로 원하는 순서를 직접 지정해보세요.