티스토리 뷰

SQL/MS-SQL

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

VoidNoble 공허공자 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() 함수로 간단하게 해결 가능!


댓글
댓글쓰기 폼
Total
923,157
Today
43
Yesterday
196
«   2021/06   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
글 보관함