기본 정렬(오름차순/내림차순)이 아닌 임의의 순서로 정렬하려면 ORDER BY FIELD(컬럼, 값1, 값2, ...)를 사용합니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> Id INT
-> );
Query OK, 0 rows affected (0.82 sec)
mysql> INSERT INTO DemoTable VALUES(101); Query OK, 1 row affected (0.23 sec) mysql> INSERT INTO DemoTable VALUES(103); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable VALUES(102); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO DemoTable VALUES(105); Query OK, 1 row affected (0.14 sec)
정렬 전 데이터
mysql> SELECT * FROM DemoTable;
+------+ | Id | +------+ | 101 | | 103 | | 102 | | 105 | +------+ 4 rows in set (0.00 sec)
사용자 정의 순서로 정렬 (102, 105, 101, 103 순)
mysql> SELECT * FROM DemoTable ORDER BY FIELD(Id, 102, 105, 101, 103);
+------+ | Id | +------+ | 102 | | 105 | | 101 | | 103 | +------+ 4 rows in set (0.00 sec)
활용 예: 상태 컬럼이 'Pending', 'Approved', 'Rejected'일 때 승인→대기→거절 순으로 정렬하려면 ORDER BY FIELD(Status, 'Approved', 'Pending', 'Rejected')처럼 쓰면 됩니다. 목록에 없는 값은 맨 뒤에 옵니다.