2012-02-27 2 views
6

나는 필드의 조합으로 구성된 "상태"로 내 레코드를 정렬해야하는 상황이 있습니다.여러 사례 문으로 MySQL 주문

 |  Sent  Received   Approved 
-------------------------------------------------- 
record1 |  null  null    null 
record2 | 2012-01-01  null    null 
record3 | 2012-01-01 2012-01-01   null 
record4 | 2012-01-01 2012-01-01  2012-01-01 

내가 그들의 전체 "상태"이러한 기록을 주문할 것 MySQL의 쿼리를 만들 것입니다 방법 : 다음 예는 오름차순으로 상태에 따라 정렬 된 결과를 반환하는 방법입니까?

+0

"상태"는 어떻게 계산됩니까? – Maciej

+0

"status"는 전송, 수신 및 승인 된 조합입니다. 그래서 보낸 레코드가 null 인 레코드는 위의 예제와 같이 첫 번째 여야합니다. – Andrew

답변

11
order by 
    case when sent is null and received is null and approved is null then 1 
     when received is null and approved is null then 2 
     when approved is null then 3 
     else 4 end 
+1

케이스 문으로 주문하려고하면 오류가 발생합니다. '열을 찾을 수 없습니다 : 1054 알 수없는 열'주문 조항 '의'CASE WHEN ... END '' – Andrew

+0

@ 앤드류, 그런 다음 '사례 "선택 문을 열 이름으로 사용하려면"as MyOrderCol "과 같은 열 이름을 지정하고 order by 절을 참조하십시오. 예를 들면"MyOrderCol에 의한 정렬 "과 같은 것입니다. CASE WHEN에 오류가있는 경우, 제공된 예제 이름이 소스 테이블의 실제 열이 아니기 때문에 별명이 지정된 결과 열 이름 – DRapp

+0

이 선택 문으로 case 문을 이동하면 문제가 해결 된 것으로 보입니다. – Andrew