order by 절에서 단순히 오름차순,내림차순이 아닌 직접 정렬순서를 지정하고 싶을때에는
CASE 구문을 사용하면 된다.
1.
select * from 테이블
order by
case when subject like '%연필%' then 1
when subject like '%지우개%' then 2
else 3
end
--> subject 필드의 값이 연필인 레코드가 1순위,
지우개인 레코드는 2순위,
나머지 레코드는 3순위으로 정렬되어 노출된다.
2.
SELECT * FROM 테이블
order by
(
CASE agree
WHEN 'Y' THEN 1
ELSE 3 END
), number desc
--> agree 필드의 값이 'Y'인 경우 1순위로 노출되도록 하고
추가로 하는 정렬은 number의 내림차순으로 정렬한다.
ex ) agree | date
Y | 777
Y | 666
Y | 555
N | 777
N | 666
[출처] http://min-mo.blogspot.com/2017/11/mysql-orderby-case.html