티스토리 뷰

SQL/MS-SQL

MSSQL에서 정렬 순서 사용자정의

공허공자 2012. 3. 31. 20:44

status 필드가 있는데
where status in ('active', 'approved', 'rejected', 'submitted') 와 같이 넣었을때
기본키 등의 order by 에 영향을 받은 sorting 이 되게 된다.

결과를 기본 sorting 영향이 아닌
자신만의 순서로 받고 싶은경우
아래와 같이 Order by Case 문으로 해결 가능하다.



http://stackoverflow.com/questions/3892406

When 조건 Then 순서번호

Use a CASE expression (SQL Server 2005+):

ORDER BY CASE status
           WHEN 'active' THEN 1
           WHEN 'approved' THEN 2
           WHEN 'rejected' THEN 3
           WHEN 'submitted' THEN 4
           ELSE 5
         END

You can use this syntax for more complex evaluation (including combinations, or if you need to use LIKE)

ORDER BY CASE 
           WHEN status LIKE 'active' THEN 1
           WHEN status LIKE 'approved' THEN 2
           WHEN status LIKE 'rejected' THEN 3
           WHEN status LIKE 'submitted' THEN 4
           ELSE 5
         END

MySQL에서는 FIELD() 함수로 간단하게 해결 가능!


댓글