2014-11-17 2 views
1

:SQL, 다중 정렬 순서

first_order = column1 != column2; 
seconder_order = column1 = column2; 
third_order = column is null; 

예. select * from table_A order by first_order , seconder_order , third_order

하지만 내가 이것을 시도하면 작동하지 않습니다.

무엇을하려고하면이 목록 first_order와 함께 second_order에 마지막으로 third_order로 테이블을 표시하려고합니다. SQL에 대한 전문가는 없습니다. 희망이 당신이 나를 도울 수 .. 미리 감사드립니다!

+0

가 작동하지 않는 것을 설명한다. 여러 열을 기준으로 정렬 할 수 있습니다. – Robbert

+0

위의 내 예제에서는 column2가 null 인 third_oreder를 가진 목록을 반환합니다. – edmund

답변

2

당신이 MySQL을 사용하는 경우, 시도 :

ORDER BY (CASE 
    WHEN column1 != column2 THEN 0 
    WHEN column1 = column2 THEN 1 
    WHEN column is null  THEN 2 
    ELSE 3 
END) ASC; 
+0

빠른 답장을 보내 주셔서 감사합니다. 하지만 귀하의 검색어를 사용하려고하지만 메신저는 오류가 발생했습니다. 오류 코드 : 1064 SQL 구문에 오류가 있습니다. 'CASE ... ASC LIMIT 0, 1000' – edmund

+0

@edmund : 'CASE ... END CASE'대신 올바른 구문이 'CASE ... END'를 사용한다고 생각합니다. –

+0

예! @ 조나단도 맞습니다! mysql에서 CASE를 사용하는 방법을 검색 한 후에 마침내이 쿼리를 오류없이 실행하고 수행하려는 작업을 수행했습니다. 나는 END CASE에서 CASE를 삭제한다. 너무 많이 turutosiya 주셔서 감사합니다! 이거 엄청나 네! – edmund