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;

반응형