Mysql orderby 정렬 CASE

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

댓글 없음:

Powered by Blogger.