mysql

[mysql] order by 특정 값으로 정렬하기

은둔한량 2023. 9. 8. 15:56
반응형

Mysql에서 정렬은 order by 다음에 필드 그리고 DESC (내림차순), ASC (오름차순)으로 정렬을 하는것이다. 

SELECT * FROM test
ORDER BY regdate DESC;

그리고 다중 정렬은 순서대로 쓰면 된다.

SELECT * FROM test
ORDER BY regdate DESC, name ASC;

 

그러면 사용자 정의 정렬 순서는 특정값을 우선으로 정렬할때는 FIELD 를 쓴다.

SELECT * FROM test
ORDER BY FIELD(컬럼1, 첫번째 정렬할 값, 두번째 정렬할 값, 세번째 정렬할 값, ...);
SELECT 
		CASE
                   WHEN user_group = 'group1' THEN 'R그룹'
                   WHEN user_group = 'group0' THEN 'S그룹'
                   WHEN user_group = 'group2' THEN 'A그룹'
                   WHEN user_group = 'group3' THEN 'B그룹'
                   WHEN user_group = 'group4' THEN '육성팀'
                   ELSE '없음'
                 END AS USER_GROUP
        FROM user 
ORDER  BY
Field(USER_GROUP, 'R그룹', 'S그룹', 'A그룹', 'B그룹', '육성팀', '없음')

 

컬럼1의 값 중에 정렬할 값들 중에 해당하는 값이 없다면 0번째 순위를 갖는다. 

 

또 다른 방법은 CASE 문을 써서 순서를 정하면 된다.

SELECT *
FROM   test
ORDER  BY CASE
            WHEN `group` = 'B' THEN 1
            WHEN `group` = 'C' THEN 2
            ELSE 3
          end;

 

 

반응형